无法使用Pyspark访问外部Hive Metastore

时间:2019-03-08 09:58:49

标签: hive pyspark metastore hive-metastore

我正在尝试运行一个简单的代码,以简单地显示以前在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()

可能是权限问题?就像某些表格未设置为在配置单元外壳程序/用户之外看到的一样。

谢谢

1 个答案:

答案 0 :(得分:0)

设法解决了这个问题,因为Hive不在该计算机上托管,因此更正了代码,一切正常。