spark 2与hive元存储的连接

dxpyg8gm  于 2021-06-26  发布在  Hive
关注(0)|答案(2)|浏览(367)

这个问题在这里已经有答案了

如何创建具有配置单元支持的sparksession(因“未找到配置单元类”而失败)(10个答案)
9个月前关门了。
在过去的3个星期里,我试图从我的机器远程连接到Hive元存储。
我有所有的配置文件:
Hive地点
以及hdfs的配置
我已经设法使用了hdfs中的文件,所以它可以工作。
我想我有Spark->Hive连接的所有jar
我写的代码如下:

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

我丢了什么jar?
观察
如果我不使用enablehivesupport(),那么它可以工作。
但我得到了下一个例外,

could not initialize class org.apach.spark.rdd.RDDOperationScope
eimct9ow

eimct9ow1#

我不确定,但这可能是因为你忘了 export HIVE_HOME 在配置单元上安装。所以呢 SparkSession 找不到在何处查找配置单元类。因此,您还需要编辑bash\u配置文件。

nano ~/.bash_profile

将以下行添加到bash\u配置文件

export HIVE_HOME=/usr/local/hive
export PATH=$PATH:$HIVE_HOME/bin

保存此文件,然后

source ~/.bash_profile

在此之后,请尝试运行您的代码。愿这能解决你的问题。

ig9co6j1

ig9co6j12#

我在过去做过这件事,不幸的是,这不是很直接。我使用命令创建了一个带有hive的spark的自定义分布

./make-distribution.sh --name my-spark-dist --tgz  -Phadoop-2.6 -Phive -Phive-thriftserver -Pyarn

我使用hive-site.xml、core-site.xml和hdfs-site.xml的客户机配置指向远程hive和hdfs,并且必须更改防火墙配置以允许连接到thrift服务器端口。
spark是用hive1.2.1编译的,文档中说可以使用较低版本的metastore,但这不起作用。工作的最低版本是1.2.0,因为在运行时它会获取在config属性中指定的jar,但在构建时它使用的配置单元版本是1.2.1,我为此引发了一个spark错误https://issues.apache.org/jira/browse/spark-14492 我不得不使用提供的升级工具将metastore数据库和服务升级到1.2.0版本Hive

相关问题