Java Spark 2与Hive MetaStore的连接
在过去的3周里,我一直在尝试从我的机器远程连接到hive metaStore 我有所有的配置文件:Java Spark 2与Hive MetaStore的连接,java,scala,apache-spark,hive,bigdata,Java,Scala,Apache Spark,Hive,Bigdata,在过去的3周里,我一直在尝试从我的机器远程连接到hive metaStore 我有所有的配置文件: 蜂巢位置 以及hdfs的配置 我已经设法使用hdfs中的文件,所以它可以工作 我想我有火花->蜂巢连接的所有罐子 我写的代码如下: import org.apache.spark.sql.Row import org.apache.spark.sql.SparkSession val warehouseLocation = "/user/hive/warehouse" val spar
- 蜂巢位置
- 以及hdfs的配置
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
我不确定,但发生这种情况可能是因为您忘记了在安装HIVE时将HIVE\u HOME导出。因此,
SparkSession
无法找到在哪里查找配置单元类。因此,您还需要编辑bash_配置文件
nano ~/.bash_profile
将以下行添加到bash_概要文件中
export HIVE_HOME=/usr/local/hive
export PATH=$PATH:$HIVE_HOME/bin
保存此文件,然后重试
source ~/.bash_profile
在此之后,请尝试运行您的代码。希望这能解决你的问题。我以前也做过,但不幸的是,这不是很简单。我使用命令创建了一个带有配置单元的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编译的,文档中说可以使用较低版本的元存储,但这不起作用。工作的最低版本是1.2.0,因为在运行时它会选择config属性中指定的JAR,但在构建时它会使用配置单元版本1.2.1
我也曾为同样的问题提出过一个火花虫
我必须使用Hive提供的升级工具将metastore DB和服务升级到1.2.0版嗯,问题是我正在尝试远程连接到Hive metastore,我没有HIVE_HOME env变量我想我有所有的依赖项当我导入org.apache.spark.sql.HIVE时,一切都很好你知道问题出在哪里了吗?