我试图运行一个简单的代码来简单地显示我以前在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/用户外部可见。
谢谢
1条答案
按热度按时间xxslljrj1#
设法解决了这个问题,因为一个通信问题,配置单元没有在该机器上托管,更正了代码,一切正常。