栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

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

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 hive和hive 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运行前就启动了

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/780106.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号