我刚刚从Spark2.0.2升级到Spark2.1.0(下载Hadoop2.7及更高版本的预构建版本)。没有安装蜂巢。
在启动星体时,将在启动位置创建metastore_db/文件夹和derby.log文件,以及一堆警告日志(这些日志在上一个版本中没有打印)。
对调试日志的仔细检查表明,Spark2.1.0试图初始化一个HiveMetastoreConnection:
17/01/13 09:14:44 INFO HiveUtils: Initializing HiveMetastoreConnection version 1.2.1 using Spark classes.
Spark2.0.2的类似调试日志不显示HiveMetastoreConnection的任何初始化。
这是有意的行为吗?这是否与spark.sql.warehouse.dir现在是会话间共享的静态配置有关?如何避免这种情况,因为我没有安装Hive?
提前感谢!
发布于 2017-01-13 15:53:07
来自Spark2.1.0 文件页
当没有由hive-site.xml配置时,上下文将在当前目录中自动创建metastore_db,并创建一个由spark.sql.warehouse.dir配置的目录,该目录默认为启动Spark应用程序的当前目录中的目录火花仓库。请注意,hivesite.xml中的hive.metastore.warehouse.dir属性在Spark2.0.0之后就不再受欢迎了。相反,使用spark.sql.warehouse.dir指定仓库中数据库的默认位置。
由于您没有安装Hive,所以您将没有一个hive-site.xml配置文件,这必须默认为当前目录。
如果您不打算在Spark中使用HiveContext,您可以从源代码中重新安装Spark2.1.0,用Maven重新构建它,并确保省略启用Hive支持的-Phive -Phive-thriftserver标志。
发布于 2017-05-18 13:12:09
对于未来的谷歌人来说:在每个工作目录中创建metastore_db和derby.log的实际根本原因是derby.system.home的默认值。
这可以在spark-defaults.conf中更改,请参见这里。
https://stackoverflow.com/questions/41633084
复制相似问题