【发布时间】:2026-01-11 12:20:07
【问题描述】:
我正在尝试运行一个简单的代码来简单地显示我之前在我的 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()
可能是权限问题吗?就像某些表未设置为在 hive shell/用户之外看到。
谢谢
【问题讨论】:
标签: hive pyspark metastore hive-metastore