[英]Pyspark cannot reach hive
簡而言之:我在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.xxIntersectGroups
這是我編寫並手動添加到配置單元的UDF。 這意味着已完成某種連接。
我得到的唯一輸出(日志除外)是:
[Database(name = u'default',description = u'default database',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 =配置單元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
在HDP 3.x中,您需要按照docs中所述使用Hive Warehouse Connector。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.