我构建并以编程方式使用 PySpark
从地面到地面的环境 conda
以及 pip
Pypark(就像我在这里演示的);而不是使用 PySpark
来自可下载的spark distribution。正如您在上面url的第一个代码片段中所看到的,我是通过sparksession启动脚本中的k/v conf对来实现这一点的(顺便说一下,这种方法使我能够在各种repl、ide和jupyter中工作。
但是,关于配置spark支持以访问配置单元数据库和元数据存储,手册中说:
的配置 Hive
通过放置 hive-site.xml
, core-site.xml
(用于安全配置),以及 hdfs-site.xml
(对于hdfs配置)文件 conf/
.
由 conf/
上面的意思是 conf/
spark分发包中的目录。但是 pyspark
通过 pip
以及 conda
当然,没有那个目录,那么在这种情况下,如何将配置单元数据库和元存储支持插入到spark中呢?
我怀疑这可能是由特殊前缀的sparkconf k/v对所适应的: spark.hadoop.*
(见此处);如果是,我仍然需要确定需要哪些hadoop/hive/core指令。我想我会试错的。:)
注: .enableHiveSupport()
已经包括在内。
我来修补一下 spark.hadoop.*
k/v对,但如果有人知道这是如何做到的,请让我知道。
谢谢。:)
编辑:解决方案提供后,我更新了上面第一个url中的内容。它现在集成了 SPARK_CONF_DIR
以及 HADOOP_CONF_DIR
下文讨论了环境变量方法。
1条答案
按热度按时间j7dteeu81#
在这种情况下,我推荐官方配置指南(我的重点):
如果您计划使用spark从hdfs读写,那么spark的类路径中应该包含两个hadoop配置文件:
hdfs-site.xml,它为hdfs客户机提供默认行为。
core-site.xml,它设置默认的文件系统名称。
(...)
要使这些文件对spark可见,请设置
HADOOP_CONF_DIR
在$SPARK_HOME/conf/spark-env.sh
到包含配置文件的位置。另外:
指定默认目录以外的其他配置目录“
SPARK_HOME/conf
,您可以设置SPARK_CONF_DIR
. spark将使用此目录中的配置文件(spark-defaults.conf、spark-env.sh、log4j.properties等)。因此,可以使用spark安装可访问的任意目录来放置所需的配置文件,以及
SPARK_CONF_DIR
和/或HADOOP_CONF_DIR
可以轻松地直接在脚本中设置,使用os.environ
.最后,大多数情况下甚至不需要单独的hadoop配置文件,因为hadoop特定的属性可以直接在spark文档中设置,使用
spark.hadoop.*
前缀。