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はそれらを無視します。
誰もこれらを取り除く方法を知っていますか、それらのデフォルトディレクトリを指定しますか?
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
は、選択したディレクトリに置き換えることができます。
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"
spark Shellを起動する前に、システムプロパティとして他のディレクトリに_derby.system.home
_を設定してみてください。Derbyはそこに新しいデータベースを作成します。このプロパティのデフォルト値は_.
_
リファレンス: https://db.Apache.org/derby/integrate/plugin_help/properties.html
使用する 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
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)