2016-07-14 13 views
9

spark-shellを実行すると、ファイルderby.logとフォルダmetastore_dbが作成されます。これらをどこかに置くためにsparkをどのように設定すればよいですか?sparkシェルからderby.log、metastore_dbを取り除く方法

私はGetting rid of derby.logのようにspark-shell --driver-memory 10g --conf "-spark.driver.extraJavaOptions=Dderby.stream.info.file=/dev/null"のようにいくつかの異なるプロパティを試しましたが、スパークは無視されます。

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

+0

質問のテキストに 'derby.stream.info.file'と入力しました。リンクした質問、http://stackoverflow.com/questions/1004327/getting-rid-of-derby-logは 'derby.stream.error.file'を設定するように言います。どちらを実際に試しましたか? –

答えて

5

hive.metastore.warehouse.dirの使用は、Spark 2.0.0、 see the docsから非難されています。

this answerによって示唆したとおり、metastore_dbディレクトリとすべての作業サブディレクトリに作成されているderby.logファイルの両方のための本当の犯人は.をデフォルトderby.system.homeプロパティです。

このように、両方のデフォルトの場所はspark-defaults.confに次の行を追加して指定することができます:/tmp/derbyは、任意のディレクトリに置き換えることができ

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

+1

これはもう動作しません。 spark 2.2の使用: –

+1

私はSpark 2.2.1の新しいインストールをテストしましたが、それは私のために働いています。おそらく許可と関係がありますか? – hiryu

2

hive.metastore.warehouse.dirプロパティを使用します。 From docs:ダービーログの

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

Getting rid of derby.logは答えである可能性があります。一般的には以下の内容で作業ディレクトリderby.propertiesファイルを作成します。

derby.stream.error.file=/path/to/desired/log/file 
+0

derbyログを解決する実際のコードはありますか? –

+0

'derby.properties'を使うことができます。 –

10

metastore_dbディレクトリを避けるし、コンテキスト/セッションがすでに作成されているので(コードでそれをやって回避し、あなたが勝ったために」:このプロパティのデフォルト値は.

リファレンスですそれらを停止し、毎回新しい設定で再作成する場合)、その場所をhive-site.xmlファイルに設定し、このファイルをspark confディレクトリにコピーする必要があります。
/tmpmetastore_dbの場所を作るためのサンプルhive-site.xmlファイル(私の答え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> 

あなたにもderby.logを取り除くために、次の

$ spark-shell --conf "spark.driver.extraJavaOptions=-Dderby.stream.error.file=/tmp" 
としてあなた spark-shellを開始することができます
+0

完全にスタンドアロンでderbyを無効にする方法。古いメソッド(postgresの設定+ dbの作成+ hive-site.xmlはスパーク2.2では動作していないようです)の多くは – mathtick

関連する問題