无法使用 Pyspark 访问外部 Hive 元存储

Can't access external Hive metastore with Pyspark

我正在尝试 运行 一个简单的代码来简单地显示我之前在我的 hive2-server 上创建的数据库。 (请注意,在这个例子中,python 和 scala 中的例子都有相同的结果)。

如果我登录配置单元 shell 并列出我的数据库,我会看到总共 3 个数据库

当我在 pyspark 上启动 Spark shell(2.3) 时,我会像往常一样将以下 属性 添加到我的 SparkSession 中:

sqlContext.setConf("hive.metastore.uris","thrift://*****:9083")

并在我的会话中重新启动 SparkContext。

如果我运行下面一行来查看所有配置:

pyspark.conf.SparkConf().getAll()
spark.sparkContext._conf.getAll()

确实可以看到添加了参数,我新建一个HiveContext:

hiveContext = pyspark.sql.HiveContext(sc)

但是如果我列出我的数据库:

hiveContext.sql("SHOW DATABASES").show()

它不会显示来自配置单元 shell 的相同结果。

我有点迷路了,出于某种原因,它似乎忽略了配置参数,因为我确定我正在使用的是我的 Metastore 作为我从 运行ning 获得的地址:

hive -e "SET" | grep metastore.uris

如果我运行:

也是同一个地址
ses2 = spark.builder.master("local").appName("Hive_Test").config('hive.metastore.uris','thrift://******:9083').getOrCreate()
ses2.sql("SET").show()

会不会是权限问题?就像有些表没有设置为在蜂巢外可见 shell/user.

谢谢

设法解决了这个问题,因为 Hive 没有托管在该机器上的通信问题,更正了代码,一切正常。