这个问题在这里已经有答案了:
如何创建具有配置单元支持的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
2条答案
按热度按时间eimct9ow1#
我不确定,但这可能是因为你忘了
export HIVE_HOME
在配置单元上安装。所以呢SparkSession
找不到在何处查找配置单元类。因此,您还需要编辑bash\u配置文件。将以下行添加到bash\u配置文件
保存此文件,然后
在此之后,请尝试运行您的代码。愿这能解决你的问题。
ig9co6j12#
我在过去做过这件事,不幸的是,这不是很直接。我使用命令创建了一个带有hive的spark的自定义分布
我使用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