Pyspark无法到达蜂巢

时间:2018-12-19 13:33:27

标签: python hive pyspark hortonworks-data-platform

简而言之:我在hdp3上有一个可配置的配置单元,我无法从pyspark到达,它在纱线下运行(在同一hdp上)。如何让pyspark查找我的桌子?

spark.catalog.listDatabases()仅显示默认值,任何查询运行都不会显示在我的配置记录中。

这是我的代码,带有spark 2.3.1

from pyspark.sql import SparkSession
from pyspark.conf import SparkConf
settings = []
conf = SparkConf().setAppName("Guillaume is here").setAll(settings)
spark = (
    SparkSession
    .builder
    .master('yarn')
    .config(conf=conf)
    .enableHiveSupport()
    .getOrCreate()
)
print(spark.catalog.listDatabases())

请注意,settings为空。我就足够了,因为在日志中我看到了

  

加载配置单元配置文件:文件:/etc/spark2/3.0.1.0-187/0/hive-site.xml

更有趣的是

  

注册函数intersectgroups io.x.x.IntersectGroups

这是我编写并手动添加到配置单元的UDF。这意味着已完成某种连接。

我得到的唯一输出(日志除外)是:

  

[数据库(名称= u'默认',description = u'默认数据库',locationUri = u'hdfs:// HdfsNameService / apps / spark / warehouse')]

我知道我应该在设置中设置spark.sql.warehouse.dir。不管我是否将其设置为在hive-site中找到的值,我感兴趣的数据库的路径(不在默认位置),它的父级,都没有改变。

我在设置中添加了许多其他配置选项(包括节俭uri),没有任何更改。

我也看到我应该将hive-site.xml复制到spark2 conf目录中。我是在群集的所有节点上完成的,没有任何更改。

我要运行的命令是:

  

HDP_VERSION = 3.0.1.0-187 PYTHONPATH =。:/ usr / hdp / current / spark2-client / python /:/ usr / hdp / current / spark2-client / python / lib / py4j-0.10.7-src .zip SPARK_HOME = / usr / hdp / current / spark2-client HADOOP_USER_NAME = hive spark-submit --master yarn --jars /usr/hdp/current/hive_warehouse_connector/hive-warehouse-connector-assembly-1.0.0.3.0.1。 0-187.jar --py文件/usr/hdp/current/hive_warehouse_connector/pyspark_hwc-1.0.0.3.0.1.0-187.zip --files /etc/hive/conf/hive-site.xml ./subjanal /anal.py

1 个答案:

答案 0 :(得分:1)

在HDP 3.x中,您需要按照the docs中所述使用Hive Warehouse Connector。