2016-07-14 56 views
9

當運行spark-shell時,它創建一個文件derby.log和一個文件夾metastore_db。我如何配置火花把這些放在其他地方?如何從Spark Shell中刪除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

自從Spark 2.0.0, see the docs以來,不推薦使用hive.metastore.warehouse.dir

由於暗示的this answer,在每個工作子目錄中創建兩個metastore_db目錄和文件derby.log真正的罪魁禍首是derby.system.home屬性默認爲.

因此,對於默認位置可以通過添加以下行來spark-defaults.conf指定:

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

其中/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

你有解決德比日誌的實際代碼嗎? –

+0

您可以使用'derby.properties'。 – 2016-11-11 04:50:28

10

火花殼,以避免在metastore_db目錄,並避免在代碼做(因爲已經創建上下文/會話,你贏了」不要停止它們並每次使用新配置重新創建它們),則必須將其位置設置爲hive-site.xml文件並將該文件複製到spark conf目錄中。
樣本hive-site.xml文件,以使/tmpmetastore_db位置(參見我的答案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" 
+0

如何在獨立中完全禁用德比。很多舊的方法(postgres setup + db creation + hive-site.xml似乎不再適用於spark 2.2) – mathtick