远程Metastore数据库在不同的Spark应用程序之间不共享global_temp数据库

时间:2019-02-04 16:32:38

标签: scala apache-spark hive hive-metastore

我启动第一个Spark应用程序,该应用程序配置为通过以下方式连接到远程Hive Metastore DB:

INSERT INTO user (user_username, user_first, user_last, user_email) 
VALUES ('$uname', '$first', '$last', '$email')

这是源代码:

.set("hive.metastore.uris", "thrift://localhost:9083")
.set("spark.sql.hive.thriftServer.singleSession", "true")

似乎将数据加载到同一metastore数据库实例内的“ global_temp”数据库​​中,如在日志中找到的那样:

val df = sparkSession.readStream
      .format("json")
      .load("gs://path/location/to/data/")

    df.writeStream.queryName("dictionary")
      .format("memory")
      .start()

但是,当我通过beeline连接到Metastore DB时,我再也看不到字典表或global_temp数据库。怎么可能?

我尝试将默认数据库值更新为“字典”数据库,并在运行Job之前创建它,我收到此错误消息:

  

线程“ main” org.apache.spark.SparkException中的异常:   字典是系统保存的数据库,请重命名   现有数据库解决名称冲突,或设置不同的名称   spark.sql.globalTempDatabase的值,并启动您的Spark   再次申请。

任何知道为什么表“ dictionary”从不出现在metastore数据库上的消息吗?

0 个答案:

没有答案