如何将hive访问集成到从pip和conda派生的pyspark中(而不是从spark分发或包)

hlswsv35  于 2021-06-27  发布在  Hive
关注(0)|答案(1)|浏览(345)

我构建并以编程方式使用 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 下文讨论了环境变量方法。

j7dteeu8

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.* 前缀。

相关问题