我启动第一个spark应用程序,配置为通过以下方式连接到远程hive metastore db:
.set("hive.metastore.uris", "thrift://localhost:9083")
.set("spark.sql.hive.thriftServer.singleSession", "true")
以下是源代码:
val df = sparkSession.readStream
.format("json")
.load("gs://path/location/to/data/")
df.writeStream.queryName("dictionary")
.format("memory")
.start()
似乎正在将数据加载到同一metastore db示例中的“global_temp”数据库中,如日志中所示:
tail -f /var/log/hive/hive-metastore.out
2019-02-04T14:16:51,628 INFO [pool-11-thread-78] org.apache.hadoop.hive.metastore.HiveMetaStore - 76: source:10.132.0.67 get_functions: db=default pat=*
2019-02-04T14:16:51,677 INFO [pool-11-thread-78] org.apache.hadoop.hive.metastore.HiveMetaStore - 76: source:10.132.0.67 get_database: default
2019-02-04T14:16:51,682 INFO [pool-11-thread-78] org.apache.hadoop.hive.metastore.HiveMetaStore - 76: source:10.132.0.67 get_database: global_temp
但是,当我通过beeline连接到metastore db时,我从来没有看到dictionary表或global\u temp数据库。怎么可能?
我尝试将默认数据库值更新到“dictionaries”数据库中,并在运行作业之前创建它,我收到以下错误消息:
线程“main”org.apache.spark.sparkexception中出现异常:字典是系统保留的数据库,请重命名现有数据库以解决名称冲突,或为spark.sql.globaltempdatabase设置其他值,然后再次启动spark应用程序。
你知道为什么表“dictionary”从来没有出现在metastoredb上吗?
暂无答案!
目前还没有任何答案,快来回答吧!