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

Posted

技术标签:

【中文标题】无法使用 Pyspark 访问外部 Hive 元存储【英文标题】:Can't access external Hive metastore with Pyspark 【发布时间】:2019-03-08 09:58:48 【问题描述】:

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

如果我登录到 hive 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()

它不会显示与 hive shell 相同的结果。

我有点迷茫,由于某种原因,它看起来好像忽略了配置参数,因为我确定我正在使用它的那个是我的元存储作为我从运行中获得的地址:

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

可能是权限问题吗?就像某些表未设置为在 hive shell/用户之外看到。

谢谢

【问题讨论】:

【参考方案1】:

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

【讨论】:

以上是关于无法使用 Pyspark 访问外部 Hive 元存储的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 pyspark 并行插入 Hive

HiveContext - 无法访问在 hive 中映射为外部表的 hbase 表

通过 Spark 加载的表在 Hive 中无法访问

无法使用 pyspark 从 hive 表中查询复杂的 SQL 语句

pyspark 2.4 无法从 sql 命令创建表需要 Hive 支持才能创建 Hive TABLE

将 sql server jar 添加到 pyspark 的类路径后无法查询 hive