Spark 2 连接到 Hive MetaStore [重复]
Posted
技术标签:
【中文标题】Spark 2 连接到 Hive MetaStore [重复]【英文标题】:Spark 2 connection to Hive MetaStore [duplicate] 【发布时间】:2017-04-19 10:52:13 【问题描述】:在过去的 3 周里,我正在尝试从我的机器远程连接到 hive metaStore。
我有所有的配置文件:
蜂巢站点 和 hdfs 的配置我已经设法使用来自 hdfs 的文件,所以它可以工作。
我想我有所有用于 spark->hive 连接的罐子
我写的代码如下:
import org.apache.spark.sql.Row
import org.apache.spark.sql.SparkSession
val warehouseLocation = "/user/hive/warehouse"
val spark = SparkSession
.builder()
.appName("SparkHiveExample")
.config("spark.sql.warehouse.dir", warehouseLocation)
.enableHiveSupport()
.getOrCreate()
它抛出这个异常:
Unable to instantiate SparkSession with Hive support because hive classes are not found. at org.apache.sql.SparkSession$builder.enableHiveSupport
我错过了什么罐子?
观察
如果我不使用 enablehiveSupport(),那么它可以工作。
然后我得到下一个异常,
could not initialize class org.apach.spark.rdd.RDDOperationScope
【问题讨论】:
我认为我拥有所有依赖项 当我导入 org.apache.spark.sql.hive_ 时一切正常 你找出问题所在了吗? 【参考方案1】:我不确定,但这可能是因为您在安装 Hive 时忘记export HIVE_HOME
。所以SparkSession
无法找到在哪里寻找蜂巢类。因此,您还需要编辑 bash_profile。
nano ~/.bash_profile
将以下行添加到您的 bash_profile
export HIVE_HOME=/usr/local/hive
export PATH=$PATH:$HIVE_HOME/bin
保存此文件,然后
source ~/.bash_profile
在此之后尝试运行您的代码。愿这能解决你的问题。
【讨论】:
好吧,问题是我正在尝试远程连接到 hive MetaStore,但我没有 HIVE_HOME env 变量【参考方案2】:我过去曾这样做过,不幸的是它不是很简单。我使用命令
创建了带有 hive 的自定义 spark 分布./make-distribution.sh --name my-spark-dist --tgz -Phadoop-2.6 -Phive -Phive-thriftserver -Pyarn
我使用 Hive hive-site.xml、core-site.xml 和 hdfs-site.xml 的客户端配置指向远程 hive 和 hdfs,并且必须更改防火墙配置以允许连接到 thrift 服务器端口。
Spark 是使用 Hive 1.2.1 编译的,文档说您可以使用较低版本的元存储,但这不起作用。工作的最低版本是 1.2.0,因为在运行时它会获取配置属性中指定的 jar,但在构建时它使用 hive 版本 1.2.1 我为相同的https://issues.apache.org/jira/browse/SPARK-14492 提出了一个火花错误 我必须使用 Hive 提供的升级工具将 Metastore 数据库和服务升级到 1.2.0 版
【讨论】:
以上是关于Spark 2 连接到 Hive MetaStore [重复]的主要内容,如果未能解决你的问题,请参考以下文章
如何配置 Apache Spark 2.4.5 以连接到 HIVE 的 MySQL Metastore?
如何将 Spark-Notebook 连接到 Hive 元存储?