5

PySpark我通过condapippyspark 从头开始​​构建并以编程方式使用我的环境(就像我在这里演示的那样);而不是PySpark从可下载的 Spark 发行版中使用。正如您在上面 URL 的第一个代码片段中看到的那样,我通过 SparkSession 启动脚本中的(除其他外)k/v conf-pairs 来完成此操作。(顺便说一下,这种方法使我能够在各种 REPL、IDE 和 JUPYTER 中工作)。

但是,关于配置 Spark 支持以访问 HIVE 数据库和元数据存储,该手册是这样说的:

的配置Hive是通过将您的hive-site.xml, core-site.xml(用于安全配置)和hdfs-site.xml(用于 HDFS 配置)文件放入conf/.

conf/上面的意思是conf/Spark 分发包中的目录。但是pysparkvia pipandconda当然没有那个目录,那么在这种情况下如何将 HIVE 数据库和元存储支持插入到 Spark 中呢?

我怀疑这可能会被特殊前缀的 SparkConf K/V 对形式的适应:(spark.hadoop.*这里);如果是,我仍然需要确定需要哪些 HADOOP / HIVE / CORE 指令。我想我会试错。:)

注意.enableHiveSupport()已经包含在内。

我会修补spark.hadoop.*K/V 对,但如果有人知道这是如何临时完成的,请告诉我。

谢谢你。:)

编辑:提供解决方案后,我更新了上面第一个 URL中的内容。它现在集成了下面讨论SPARK_CONF_DIRHADOOP_CONF_DIR环境变量方法。

4

1 回答 1

3

在这种情况下,我推荐官方配置指南(强调我的):

如果您计划使用 Spark 从 HDFS 读取和写入,Spark 的类路径中应包含两个 Hadoop 配置文件:

  • hdfs-site.xml,它为 HDFS 客户端提供默认行为。
  • core-site.xml,设置默认文件系统名称。

(...)

要使这些文件对 Spark 可见,请设置HADOOP_CONF_DIR$SPARK_HOME/conf/spark-env.sh包含配置文件的位置。

另外

要指定默认的“<code>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.*前缀进行设置。

于 2019-01-30T19:31:31.490 回答