如何在 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?
在 Apache Spark 中,用 Java 将数据帧写入 Hive 表