我正在尝试运行一个简单的代码,以简单地显示以前在hive2-server上创建的数据库。 (请注意,在此示例中,使用python和scala的示例都具有相同的结果)。
如果我登录到配置单元外壳并列出我的数据库,则总共可以看到 3个数据库。
当我在pyspark上启动sprak 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()
它不会从蜂巢壳中显示出相同的结果。
我有点迷茫,由于某种原因,它似乎忽略了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()
可能是权限问题?就像某些表格未设置为在配置单元外壳程序/用户之外看到的一样。
谢谢
答案 0 :(得分:0)
设法解决了这个问题,因为Hive不在该计算机上托管,因此更正了代码,一切正常。