Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将HIVE access集成到源自pip和conda的PySpark中(不是来自Spark分发或包)_Python_Apache Spark_Hive_Pyspark_Hive Metastore - Fatal编程技术网

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
via
pip
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可见,请将
$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.*
前缀键。我现在正在研究后者。感谢您确认,在这一点上,有标记的答案。