我正在尝试运行一个简单的代码来简单地显示我之前在我的 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()
会不会是权限问题?就像某些表未设置为在配置单元外壳/用户之外看到。
谢谢