如何将 HIVE 访问集成到源自 pip 和 conda(而不是来自 Spark 发行版或包)的 PySpark

NYC*_*yes 5 python hive apache-spark pyspark hive-metastore

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

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

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

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

我怀疑这可能是通过特殊前缀的 SparkConf K/V 对来实现的,其形式为:(spark.hadoop.*参见此处);如果是,我仍然需要确定需要哪些 HADOOP / HIVE / CORE 指令。我想我会尝试一下并犯错。:)

.enableHiveSupport()已经包含在内。

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

谢谢。:)

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

use*_*362 3

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

\n\n
\n

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

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

(...)

\n\n

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

\n
\n\n

此外

\n\n
\n

要指定除默认 \xe2\x80\x9c SPARK_HOME/conf\xe2\x80\x9d 之外的其他配置目录,您可以设置SPARK_CONF_DIR. Spark 将使用此目录中的配置文件(spark-defaults.conf、spark-env.sh、log4j.properties 等)。

\n
\n\n

因此,可以使用 Spark 安装可访问的任意目录来放置所需的配置文件,和SPARK_CONF_DIR/或HADOOP_CONF_DIR可以使用os.environ.

\n\n

最后,大多数时候甚至不需要单独的 Hadoop 配置文件,因为 Hadoop 特定属性可以使用spark.hadoop.*前缀直接在 Spark 文档中设置。

\n