2

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

.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()

似乎将数据加载到同一元存储数据库实例中的“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

但是,当我通过直线连接到 Metastore 数据库时,我从未看到字典表或 global_temp 数据库。怎么可能?

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

线程 "main" org.apache.spark.SparkException 中的异常:字典是系统保留的数据库,请重命名现有数据库以解决名称冲突,或为 spark.sql.globalTempDatabase 设置不同的值,然后再次启动您的 Spark 应用程序.

知道为什么表“字典”从未出现在元存储数据库上吗?

4

0 回答 0