预构建 Spark 2.1.0 在启动 spark-shell 时创建 metastore_db 文件夹和 derby.log

hir*_*ryu 1 apache-spark apache-spark-2.0

我刚刚从 Spark 2.0.2 升级到 Spark 2.1.0(通过下载 Hadoop 2.7 及更高版本的预构建版本)。没有安装 Hive。

spark-shell 启动后,会在启动位置创建metastore_db/文件夹和derby.log文件,以及一堆警告日志(在以前的版本中没有打印出来)。

仔细检查调试日志显示 Spark 2.1.0 尝试初始化 a HiveMetastoreConnection

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

Spark 2.0.2 的类似调试日志没有显示HiveMetastoreConnection.

这是预期的行为吗?是否与spark.sql.warehouse.dir现在会话之间共享的静态配置有关?我如何避免这种情况,因为我没有安装 Hive?

提前致谢!

Ale*_*kiy 5

从 Spark 2.1.0文档页面

hive-site.xml没有配置时,context会在当前目录自动创建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 配置文件,并且这必须默认为当前目录。

如果您不打算HiveContext在 Spark 中使用,您可以从源代码重新安装 Spark 2.1.0,使用 Maven 重建它并确保省略-Phive -Phive-thriftserver启用 Hive 支持的标志。


hir*_*ryu 5

对于未来的 googlers:在每个工作目录中创建metastore_db和的实际根本原因derby.logderby.system.home.

这可以更改spark-defaults.conf,请参见此处