web-dev-qa-db-ja.com

Spark Shellからderby.log、metastore_dbを取り除く方法

spark-Shellファイルを作成しますderby.logおよびフォルダーmetastore_db。 sparkを他の場所に配置するにはどうすればよいですか?

Derbyログの場合、 derby.logを削除する のようにspark-Shell --driver-memory 10g --conf "-spark.driver.extraJavaOptions=Dderby.stream.info.file=/dev/null"にはいくつかの異なるプロパティがありますが、sparkはそれらを無視します。

誰もこれらを取り除く方法を知っていますか、それらのデフォルトディレクトリを指定しますか?

16

Hive.metastore.warehouse.dirの使用は、Spark 2.0.0、 ドキュメントを参照

この回答 で示唆されているように、すべての作業サブディレクトリで作成されるmetastore_dbディレクトリとderby.logファイルの両方の本当の犯人は、デフォルトでderby.system.homeに設定される.プロパティです。

したがって、次の行をspark-defaults.confに追加することで、両方のデフォルトの場所を指定できます。

spark.driver.extraJavaOptions -Dderby.system.home=/tmp/derby

/tmp/derbyは、選択したディレクトリに置き換えることができます。

11
hiryu

Spark-Shellの場合、metastore_dbディレクトリを避け、コード内でそれを行わないようにします(コンテキスト/セッションは既に作成されており、毎回それらを停止して新しい構成で再作成しないため)その場所をHive-site.xmlファイルに設定し、このファイルをspark confディレクトリにコピーする必要があります。
Hive-site.xml内のmetastore_dbの場所を作成するサンプル/tmpファイル(私の回答 here を参照):

<configuration>
   <property>
     <name>javax.jdo.option.ConnectionURL</name>
     <value>jdbc:derby:;databaseName=/tmp/metastore_db;create=true</value>
     <description>JDBC connect string for a JDBC metastore</description>
   </property>
   <property>
     <name>javax.jdo.option.ConnectionDriverName</name>
     <value>org.Apache.derby.jdbc.EmbeddedDriver</value>
     <description>Driver class name for a JDBC metastore</description>
   </property>
   <property>
      <name>Hive.metastore.warehouse.dir</name>
      <value>/tmp/</value>
      <description>location of default database for the warehouse</description>
   </property>
</configuration>

その後、次のようにspark-Shellを起動して、derby.logも削除できます。

$ spark-Shell --conf "spark.driver.extraJavaOptions=-Dderby.stream.error.file=/tmp"
12
user1314742

spark Shellを起動する前に、システムプロパティとして他のディレクトリに_derby.system.home_を設定してみてください。Derbyはそこに新しいデータベースを作成します。このプロパティのデフォルト値は_._

リファレンス: https://db.Apache.org/derby/integrate/plugin_help/properties.html

3
Bill

使用する Hive.metastore.warehouse.dirプロパティ。 ドキュメントから

val spark = SparkSession
  .builder()
  .appName("Spark Hive Example")
  .config("spark.sql.warehouse.dir", warehouseLocation)
  .enableHiveSupport()
  .getOrCreate()

Derbyログの場合: derby.logを取り除く が答えかもしれません。通常、derby.propertiesファイル作業ディレクトリに次の内容があります:

derby.stream.error.file=/path/to/desired/log/file
2
user6022341

Jupyter/Jupyterhub/Jupyterlabを使用している場合、またはpython内でこのconfパラメーターを設定している場合は、次を使用してください:

from pyspark import SparkConf, SparkContext

conf = (SparkConf()
    .setMaster("local[*]")
    .set('spark.driver.extraJavaOptions','-Dderby.system.home=/tmp/derby')
   )

sc = SparkContext(conf = conf)
0
kennyut