无法使用 Pyspark 访问外部 Hive 元存储
Can't access external Hive metastore with Pyspark
我正在尝试 运行 一个简单的代码来简单地显示我之前在我的 hive2-server 上创建的数据库。 (请注意,在这个例子中,python 和 scala 中的例子都有相同的结果)。
如果我登录配置单元 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()
它不会显示来自配置单元 shell 的相同结果。
我有点迷路了,出于某种原因,它似乎忽略了配置参数,因为我确定我正在使用的是我的 Metastore 作为我从 运行ning 获得的地址:
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/user.
谢谢
设法解决了这个问题,因为 Hive 没有托管在该机器上的通信问题,更正了代码,一切正常。
我正在尝试 运行 一个简单的代码来简单地显示我之前在我的 hive2-server 上创建的数据库。 (请注意,在这个例子中,python 和 scala 中的例子都有相同的结果)。
如果我登录配置单元 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()
它不会显示来自配置单元 shell 的相同结果。
我有点迷路了,出于某种原因,它似乎忽略了配置参数,因为我确定我正在使用的是我的 Metastore 作为我从 运行ning 获得的地址:
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/user.
谢谢
设法解决了这个问题,因为 Hive 没有托管在该机器上的通信问题,更正了代码,一切正常。