Python 如何将HIVE access集成到源自pip和conda的PySpark中(不是来自Spark分发或包)
我通过Python 如何将HIVE access集成到源自pip和conda的PySpark中(不是来自Spark分发或包),python,apache-spark,hive,pyspark,hive-metastore,Python,Apache Spark,Hive,Pyspark,Hive Metastore,我通过conda和pipPySpark从头开始构建并编程使用我的PySpark环境(如我演示的);而不是使用可下载的Spark分发版中的PySpark。正如您在上面URL的第一个代码片段中所看到的,我通过SparkSession启动脚本中的k/v conf对来完成这一任务。(顺便说一句,这种方法使我能够在各种repl、ide和JUPYTER中工作) 但是,关于配置Spark支持以访问配置单元数据库和元数据存储,手册中指出: 通过将Hive site.xml、core site.xml(用于安全配
conda
和pip
PySpark从头开始构建并编程使用我的PySpark
环境(如我演示的);而不是使用可下载的Spark分发版中的PySpark
。正如您在上面URL的第一个代码片段中所看到的,我通过SparkSession启动脚本中的k/v conf对来完成这一任务。(顺便说一句,这种方法使我能够在各种repl、ide和JUPYTER中工作)
但是,关于配置Spark支持以访问配置单元数据库和元数据存储,手册中指出:
通过将Hive site.xml
、core site.xml
(用于安全配置)和hdfs site.xml
(用于hdfs配置)文件放置在conf/
中,可以完成Hive
的配置
上面的conf/
表示Spark分发包中的conf/
目录。但是pyspark
viapip
和conda
当然没有这个目录,那么在这种情况下,如何将配置单元数据库和元存储支持插入Spark呢
我怀疑这可能是由特殊前缀的SparkConf K/V对实现的:spark.hadoop.*
(请参阅);如果是,我仍然需要确定需要哪些HADOOP/HIVE/CORE指令。我想我会尝试错误的方法。:)
注意:.enableHiveSupport()
已经包含在内
我将修补spark.hadoop.*
K/V对,但如果有人知道如何立即完成,请务必告诉我
谢谢。:)
编辑:提供解决方案后,我更新了中的内容。它现在集成了下面讨论的
SPARK\u CONF\u DIR
和HADOOP\u CONF\u DIR
环境变量方法。在这种情况下,我推荐(我的重点):
如果您计划使用Spark从HDFS读写,Spark的类路径中应该包含两个Hadoop配置文件:
- hdfs-site.xml,它为hdfs客户端提供默认行为
- core-site.xml,它设置默认文件系统名称
$Spark\u HOME/CONF/Spark env.sh中的HADOOP\u CONF\u DIR
设置为包含配置文件的位置
:
要指定默认“SPARK\u HOME/conf
”以外的其他配置目录,可以设置SPARK\u conf\u DIR
。Spark将使用此目录中的配置文件(Spark-defaults.conf、Spark-env.sh、log4j.properties等)
因此,可以使用Spark安装可访问的任意目录来放置所需的配置文件,并且可以使用直接在脚本中设置Spark_CONF_DIR
和/或HADOOP_CONF_DIR
最后,大多数时候甚至不需要单独的Hadoop配置文件,因为Hadoop特定的属性可以直接在Spark文档中使用Spark.Hadoop.*
prefix进行设置。谢谢。我完全忘记了SPARK_CONF_DIR
;我同意您的看法,在单独的hadoop XML配置文件上,更倾向于使用spark.hadoop.*
前缀键。我现在正在研究后者。感谢您确认,在这一点上,有标记的答案。