2017-01-13 18 views
1

我剛從Spark 2.0.2升級到Spark 2.1.0(稍後通過下載Hadoop 2.7 &的預構建版本)。沒有配置Hive。Prebuilt Spark 2.1.0在啓動spark-shell時創建metastore_db文件夾和derby.log

一旦啓動了spark-shell,將在啓動位置創建metastore_db/文件夾和derby.log文件以及一堆警告日誌(未在以前的版本中打印)。

調試日誌的仔細檢查表明,星火2.1.0試圖初始化一個HiveMetastoreConnection:爲星火2.0.2

17/01/13 09:14:44 INFO HiveUtils: Initializing HiveMetastoreConnection version 1.2.1 using Spark classes.

類似的調試日誌不顯示的HiveMetastoreConnection任何初始化。

這是預期的行爲?這可能與spark.sql.warehouse.dir現在是在會話間共享的靜態配置有關嗎?我如何避免這種情況,因爲我沒有安裝Hive?

在此先感謝!

回答

3

從火花2.1.0 documentation pages

當不是由蜂巢-site.xml中配置,上下文自動 在當前目錄中創建metastore_db並創建由spark.sql.warehouse構成的目錄 .dir,其默認爲啓動Spark應用程序爲 的當前目錄中的目錄 spark-warehouse。請注意,自從Spark 2.0.0以來,不推薦使用 hive-site.xml中的hive.metastore.warehouse.dir屬性。相反,使用 spark.sql.warehouse.dir指定數據庫在 倉庫中的默認位置。

由於您沒有安裝Hive,因此您將不會有hive-site.xml配置文件,並且這必須默認爲當前目錄。

如果您不打算在Spark中使用HiveContext,可以從源代碼重新安裝Spark 2.1.0,使用Maven重建它,並確保省略啓用Hive支持的-Phive -Phive-thriftserver標誌。

+0

謝謝,那肯定是這樣的。我希望我可以避免從源代碼重建,以避免創建這些文件夾,但我沒有其他辦法。 – hiryu

2

對於未來的谷歌搜索:在每個工作目錄中創建metastore_dbderby.log的實際潛在原因是缺省值derby.system.home

這可以在spark-defaults.conf中更改,參見here

+1

另請參閱https://issues.apache.org/jira/browse/SPARK-4758,以避免通過請求嵌入式,易失性** **內存** Derby數據庫來創建'metastore_db'。 –

+0

另請參閱https://jaceklaskowski.gitbooks.io/mastering-apache-spark/content/spark-tips-and-tricks-running-spark-windows.html以瞭解如何設置'hive.exec.scratchdir'屬性。 –

0

這也發生在Spark 1.6中。

-Dderby.system.home=/tmp/derby 

(或derby.properties,有幾種方法可以改變它):您可以通過在星火添加提交額外的選項更改路徑。

相關問題