无法使用pyspark访问外部配置单元元存储

kcrjzv8t  于 2021-06-27  发布在  Hive
关注(0)|答案(1)|浏览(434)

我试图运行一个简单的代码来简单地显示我以前在hive2服务器上创建的数据库(注意在这个例子中有两个例子,python和scala中的例子都有相同的结果)。
如果我登录到一个hiveshell并列出我的数据库,我会看到总共3个数据库。
当我在pyspark上启动sparkshell(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外壳的相同结果。
我有点迷路了,因为某些原因,它看起来好像忽略了config参数,因为我确信我使用的是我的metastore,它是我从运行中获得的地址:

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/用户外部可见。
谢谢

xxslljrj

xxslljrj1#

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

相关问题