如何在 Apache Spark 中添加 Hive 支持? [复制]

Posted

技术标签:

【中文标题】如何在 Apache Spark 中添加 Hive 支持? [复制]【英文标题】:How do I add Hive support in Apache Spark? [duplicate] 【发布时间】:2019-07-31 01:33:45 【问题描述】:

我有以下设置: - HDFS - 蜂巢 - 远程 Hive Metastore(和一个 Metastore 数据库) - Apache Spark(从https://archive.apache.org/dist/spark/spark-2.4.3/下载并安装)

我可以按预期使用 Hive,创建表 - 从 HDFS 读取数据等等。但是,无法通过 Hive 支持运行 spark。每当我运行val sparkSession = SparkSession.builder().appName("MyApp").enableHiveSupport().getOrCreate()

我收到java.lang.IllegalArgumentException: Unable to instantiate SparkSession with Hive support because Hive classes are not found.

Hive 类在路径中,我已经复制了 hive-site.xml、core-site.xml 和 hdfs-site.xml

我是否需要使用 hive 支持构建 spark(如此处所述:https://spark.apache.org/docs/latest/building-spark.html#building-with-hive-and-jdbc-support)才能使 spark 与 hive 一起使用?

是否有可用的带有 Hive 支持 tar 的 Spark,我可以提取它而不是从源代码构建?

谢谢!

【问题讨论】:

【参考方案1】:

你在什么环境下运行 spark?简单的答案是让任何可用的打包工具完成所有繁重的工作。例如,如果你在 osx 上使用 brew 来安装所有东西。如果您在 maven/sbt 项目中,请引入 spark-hive 包等。

我需要用 hive 支持构建 spark

如果您是从源代码手动构建火花,是的。这是一个示例命令。 (但您可能不必这样做)

./build/mvn -Pyarn -Phive -Phive-thriftserver -DskipTests 清理包

http://spark.apache.org/docs/latest/building-spark.html#building-with-hive-and-jdbc-support

如果你缺课,spark 会在内部检查 hive-exec-1.2.1.spark.jar 中是否存在“org.apache.hadoop.hive.conf.HiveConf”。请注意,这是一个自定义版本的 hive,旨在与 spark 完美配合。

https://mvnrepository.com/artifact/org.spark-project.hive/hive-exec/1.2.1.spark

【讨论】:

感谢@Andrew Long 的回复,我正在使用 docker 在容器中安装和构建 Spark。它基于 debian:stretch 图像 - 所以从 archive.apache.org/dist/spark/spark-2.4.3 获取 tar 并使用 tar 提取源代码。看来我无论如何都必须从源代码构建! 是否有可用 Hive 支持构建的 tar? 添加了一个包含您需要的确切 jar 的更新。 太棒了!谢谢!我认为这就是我要找的。也就是说,与此同时,我开始研究从源头构建火花。我将尝试添加您首先提到的 JAR。 使用该 Jar 不起作用。我猜我必须在配置单元支持的情况下从源代码构建它

以上是关于如何在 Apache Spark 中添加 Hive 支持? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何配置 Apache Spark 2.4.5 以连接到 HIVE 的 MySQL Metastore?

Spark SQL on HIVE

从 Apache Spark 连接到 Hive [重复]

在 Apache Spark 中,用 Java 将数据帧写入 Hive 表

实例化“org.apache.spark.sql.hive.HiveExternalCatalog”时出错

如何引用列中的第一个非空字符串 - Cloudera Impala / Apache Hive / Spark SQL