Error: Failed to load class org.apache.spark.sql.hive.thriftserver.SparkSQLCLIDriver

项目场景:

项目场景:hive与SparkSQL整合时,出现该报错,严格意义上来说是

使用SparkSQL命令时遇到该报错


问题描述

在使用SparkSQL命令时遇到该报错

java.lang.ClassNotFoundException: org.apache.spark.sql.hive.thriftserver.SparkSQLCLIDriver
	at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
	at java.lang.Class.forName0(Native Method)
	at java.lang.Class.forName(Class.java:348)
	at org.apache.spark.util.Utils$.classForName(Utils.scala:229)
	at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:695)
	at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:187)
	at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:212)
	at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:126)
	at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
Failed to load main class org.apache.spark.sql.hive.thriftserver.SparkSQLCLIDriver.
You need to build Spark with -Phive and -Phive-thriftserver.

原因分析:

这是外网原文中谈及的原因

This error usually occurs when installing a Spark version without built-in Hadoop libraries (headless version) as the Spark hive and hive thrift server packages are not included.

大意是说,这个问题的原因是你安装spark时选择了without Hadoop的版本, 所以没有找到Spark hivehive thrift server的包


解决方案:

有两种解决方式

一、重新安装spark,选择带hadoop的版本

spark官网下载界面下载spark
选择对应版本
下载好安装包后上传至服务器
进行解压安装

tar -zxvf spark-2.1.0-bin-hadoop2.7.tgz

放到你想安装的目录,建立软连接

sudo mv spark-2.1.0-bin-hadoop2.7 /usr/local/
sudo ln -snf /usr/local/spark-2.1.0-bin-hadoop2.7/ /usr/local/spark

软连接的目的是为了以后更换spark版本方便,操作也简洁

编辑环境变量
vim /etc/profile

#Spark
export SPARK_HOME=/usr/local/spark
export PATH=$PATH:$SPARK_HOME/bin

source /etc/profile
$SPARK_HOME/conf中有配置文件的示例,复制一份,编辑配置文件

cp spark-env.sh.template spark-env.sh

在文件中添加这一行
这是spark对Hadoop的依赖地址

export SPARK_DIST_CLASSPATH=$(/usr/local/hadoop/bin/hadoop classpath)

之后就可以启动spark

二、手动下载缺失的jar包

这种方法不一定有用
手动下载包

If you are installing other versions of Spark, download the right package accordingly.
请下载与你spark版本对应的包
安装包下载地址:
Maven仓库中spark-hive-thriftserver
版本选择

下载包或者利用sftp工具上传:

wget https://repo1.maven.org/maven2/org/apache/spark/spark-hive-thriftserver_2.12/3.0.1/spark-hive-thriftserver_2.12-3.0.1.jar

将包放到$SPARK_HOME/jars文件夹下

mv spark-hive-thriftserver_2.12-3.0.1.jar $SPARK_HOME/jars/

下载另一个需要的文件spark-hive_*

wget https://repo1.maven.org/maven2/org/apache/spark/spark-hive_2.12/3.0.1/spark-hive_2.12-3.0.1.jar

放到$SPARK_HOME/jars文件夹下

mv spark-hive_2.12-3.0.1.jar $SPARK_HOME/jars/

现在sparksql可以正常使用了
注意:确保你的HiveServer2服务在sparksql运行前就启动了

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值