最近在hive里将mr换成spark引擎后,执行插入和一些复杂的hql会触发下面的异常:

org.apache.hive.service.cli.HiveSQLException: Error while compiling statement: FAILED: SemanticException Failed to get a spark session: org.apache.hadoop.hive.ql.metadata.HiveException: Failed to create Spark client for Spark session c5924990-6187-4a15-a760-ec3b1afbc199

未能创建spark客户端的原因有这几个:

1,spark没有打卡

2,spark和hive版本不匹配

3,hive连接spark客户端时长过短

解决方案:

1,在进入hive之前,需要依次启动hadoop,spark,hiveservice,这样才能确保hive在启动spark引擎时能成功

spark启动:

cd /opt/spark
./sbin/start-all.sh

2,版本问题是最常见也是出现最多的问题,我用的版本依次为hadoop3.3.0,hive3.1.2,spark2.4.7,之前测试过spark3.0.1,发现和hive不兼容

这里还需要注意Apache官网的提供了如图所示的几个spark包版本:

但在集成hive时spark本身不能自带hive配置,所以只有第三个是可以用的,但是我测试了一下在我的电脑上还是报错,所以我选择了自己编译,下载最后一个源码包,解压后进入spark目录

输入命令:

./dev/make-distribution.sh --name without-hive --tgz -Pyarn -Phadoop-3.3 -Dhadoop.version=3.3.0 -Pparquet-provided -Porc-provided -Phadoop-provided

但是发现编译卡住了,原来编译会自动下载maven,scala,zinc,存放在build目录下,如图:

由于下载过于缓慢,这里直接将这三个包放在build目录下,解压好,编译时会自动识别,可以省去很多时间,快速进入编译,需要压缩包的可以关注公众号:Tspeaker97  给我发消息找我要

编译过程比较慢,我花了30分钟才将spark编译好,中间还网络断流卡住失败了一次,如果不能访问外网的,建议将maven镜像改为阿里云。

编译完成后在spark目录下就可以看到编译出的tgz包,解压到对应目录:

vim spark-env.sh
插入如下代码:
export SPARK_DIST_CLASSPATH=$(hadoop classpath)

接下来就是hive的设置,这里我用的是公司编译好的版本,大小比Apache官网大一点,想要可以微信扣我

进入hive/conf目录:

vim spark-defaults.conf
插入如下代码:
spark.master yarn
spark.eventLog.enabled true
spark.eventLog.dir hdfs://hadoop01:9820/spark-history
spark.executor.memory 2g

在hdfs创建对应目录并拷贝jar包:

hadoop fs -mkdir /spark-history
hadoop fs -mkdir /spark-jars
hadoop fs -put /opt/spark/jars/* /spark-jars

在hive/conf/hive-site.xml中增加:(这里特地延长了hive和spark连接的时间,可以有效避免超时报错)

<!--Spark依赖位置-->
<property>
<name>spark.yarn.jars</name>
<value>hdfs://hadoop01:9820/spark-jars/*</value>
</property> <!--Hive执行引擎-->
<property>
<name>hive.execution.engine</name>
<value>spark</value>
</property> <!--Hive和spark连接超时时间-->
<property>
<name>hive.spark.client.connect.timeout</name>
<value>100000ms</value>
</property>

然后启动spark服务,hive服务,并进入hive客户端,执行hql:

set hive.exec.mode.local.auto=true;

create table visit(user_id string,shop string) row format delimited fields terminated by '\t';

load data local inpath '/opt/hive/datas/user_id' into table visit;

SELECT t1.shop,
t1.user_id,
t1.count,
t1.rank
FROM
(SELECT shop,
user_id,
count(user_id) COUNT,
rank() over(partition BY shop ORDER BY count(user_id) DESC) rank
FROM visit
GROUP BY user_id,
shop
ORDER BY shop ASC, COUNT DESC ) t1
WHERE rank <4;

spark引擎成功启动:

如果有其他问题,欢迎叨扰:

Failed to create Spark client for Spark session的更多相关文章

  1. hive on spark:return code 30041 Failed to create Spark client for Spark session原因分析及解决方案探寻

    最近在Hive中使用Spark引擎进行执行时(set hive.execution.engine=spark),经常遇到return code 30041的报错,为了深入探究其原因,阅读了官方issu ...

  2. AX2012 R3 Data upgrade checklist sync database step, failed to create a session;

    最近在做AX2012 R3 CU9 到CU11的upgrade时 (用的Admin帐号), 在Date upgrade 的 synchronize database 这步 跑了一半,报出错误 说“fa ...

  3. Tensorflow 报错:tensorflow.python.framework.errors_impl.InternalError: Failed to create session.

    问题描述 IDE:pycharm,环境中安装tensorflow-gpu 1.8.0 ,Cuda9 ,cudnn 7,等,运行代码 报错如下 tensorflow.python.framework.e ...

  4. Spark On Yarn报警告信息 WARN yarn.Client: Neither spark.yarn.jars nor spark.yarn.archive is set, falling back to uploading libraries under SPARK_HOME.

    1 贴出完整日志信息 // :: INFO client.RMProxy: Connecting to ResourceManager at hdp1/ // :: INFO yarn.Client: ...

  5. Spark Client启动原理探索

    经过几天闲暇时间的学习,终于又理解的深入了一些,关于Spark Client如何提交作业也更清晰了点. 在整体的流程图上是这样的: 大体的思路就是应用程序通过SparkSubmit提交程序后,自动在当 ...

  6. 用NFS挂载root出现:NFS: failed to create MNT RPC client, status=-101(-110)

      2014-02-18 08:06:17 By Ly #Linux 阅读(78) 评论(0) 错误信息如下: Root-NFS: nfsroot=/home/zenki/nfs/rootfs NFS ...

  7. spark client + yarn计算

    前提:完成hadoop + kerberos安全环境搭建. 安装配置spark client: 1. wget https://d3kbcqa49mib13.cloudfront.net/spark- ...

  8. 【原创】大数据基础之Spark(1)Spark Submit即Spark任务提交过程

    Spark2.1.1 一 Spark Submit本地解析 1.1 现象 提交命令: spark-submit --master local[10] --driver-memory 30g --cla ...

  9. Docker 搭建Spark 依赖sequenceiq/spark:1.6镜像

    使用Docker-Hub中Spark排行最高的sequenceiq/spark:1.6.0. 操作: 拉取镜像: [root@localhost home]# docker pull sequence ...

随机推荐

  1. 第15.33节 PyQt(Python+Qt)入门学习:containers容器类部件QTabWidget选项窗部件简介

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.概述 容器部件就是可以在部件内放置其他部件的部件,在Qt Designer中可以使用的容器部件有 ...

  2. PyQt(Python+Qt)学习随笔:Qt Designer中部件的toolTip、toolTipDuration、statusTip、whatsThis属性

    toolTip属性 toolTip属性设置部件的toolTip提示信息,toolTip提示信息在鼠标放到控件上会浮动出一个小框显示提示信息.默认情况下,仅显示活动窗口子部件的toolTip,可以通过在 ...

  3. PyQt(Python+Qt)学习随笔:Qt Designer中spacer部件的sizeType属性

    在Designer的spacers部件中有2个部件,分别是Horizontal Spacer和Vertical Spacer,这两个部件都有sizeType属性,如图: 这个sizeType实际上与Q ...

  4. NET CORE通过NodeService调用js

    在 .NET Framework 时,我们可以通过V8.NET等组件来运行 JavaScript,不过目前我看了好几个开源组件包括V8.NET都还不支持 .NET Core ,我们如何在 .NET C ...

  5. js 转为整数之Number()、parseInt()、parseFloat()区别

    一:Number() 如果是Boolean值,true和false值将分别被转换为1和0. 如果是数字值,只是简单的传入和返回. 如果是null值,返回0. 如果是undefined,返回NaN. 如 ...

  6. js setTimeout运行机制

    在开始之前先看个面试例子 为什么会是0 1 2 2,而不是 0 0 1 1 再来看个例子 输出结果是4个undefined,为何不是1,2,3,4? 这是为什么呢,这是因为setTimeout是异步的 ...

  7. 单次期望 O(1) 的RMQ

    膜万弘,太强了!!! 刚刚变态的zjjws想要将一个需要 \(RMQ\) 问题的时间和空间都卡成 \(O(n)\) ,就在可怜的蒟蒻 Point_King 一筹莫展之时万弘他出现了,给予了本蒟蒻光明和 ...

  8. TMOOC 1969 开锁

    update on 2020.2.28 时隔近日重新想这道题,其实复杂度正确的解法是 可持久化 01 Trie. 考虑对于每一个 \(a[i]\),考虑能将它作为最大值的最大包容区间 \([l, r] ...

  9. linux下安装Zookeeper 3.4.14

    1.下载Zookeeper 3.4.14(https://zookeeper.apache.org/) wget https://mirror.bit.edu.cn/apache/zookeeper/ ...

  10. 自搭建jetbrains系列ide授权服务器

    1.下载 LicenseServer 地址:https://mega.nz/#!7B5UVY6b!Hae2ceTBPIrTowQN0sV9fQ5lGOKzGxas2ug02RZAdGU,里面有不同的服 ...