Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spark 2与Hive MetaStore的连接_Java_Scala_Apache Spark_Hive_Bigdata - Fatal编程技术网

Java Spark 2与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

在过去的3周里,我一直在尝试从我的机器远程连接到hive metaStore

我有所有的配置文件:

  • 蜂巢位置
  • 以及hdfs的配置
我已经设法使用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时,一切都很好你知道问题出在哪里了吗?