IDEA中sparksession连接hive的种种问题

作者:神秘网友 发布时间:2020-08-02 15:26:22

IDEA中sparksession连接hive的种种问题

IDEA中sparksession连接hive的种种问题

报错:Caused by: java.lang.RuntimeException: Error while running command to get file permissions : java.io.IOException: (null) entry in command string: null ls -F D:\tmp\hive
或者报错:The root scratch dir: /tmp/hive on HDFS should be writable. Current permissions are: --------

报错原因
这个问题主要是因为 Spark初始化Hive上下文所需的winutils.exe丢失文件引起的,而该 文件又依赖于 Hadoop,后者需要Windows上有hadoop才可以;

winutils.exe下载链接:
https://github.com/steveloughran/winutils/raw/master/hadoop-2.6.0/bin/winutils.exe

Hadoop下载链接:
http://spark.apache.org/downloads.html 选择spark版本,这里我选的是2.4.4
解决方案:

winutils.exe和hadoop都下载完后,将winutils.exe放入下载的hadoop\bin目录下

Hadoop存储位置需和你 报错信息中的 \tmp\hive的位置要一致

上述报错中,我报错位置是 null ls -F D:\tmp\hive 所以我将hadoop放到了D:\下

(注意:如果是第二种报错随便找个地方放着就行)

然后找根目录或者放hadoop的目录看看有没有tmp/hive这个目录有就删除

上述步骤都完成后,在我的电脑属性中配置环境变量HADOOP_HOME指定到我们haodoop的根目录下
然后在Path下配置%HADOOP_HOME%\bin

环境变量配置完后,win+r打开cmd窗口

执行spark-shell命令,打开spark交互窗口

随意执行一句sqrksql(hsql)语句,这里我执行的是 spark.sql(“show databases”).show

执行完后,去我们存放hadoop的根目录下查看是否,生成目录tmp

(注意:如果是第二种报错指不定在哪个盘符的根目录下自己找)

当成功后,退出spark 切换盘符到存放hadoop的根目录下,重新打开cmd

输入%HADOOP_HOME%\bin\winuitls.exe chmod 777 \tmp\hive 修改文件夹权限

此时,如果你的ideal正在运行,请关闭它(最好这样做,不关闭有可能前面步骤你都做对了,但是还是会报之前的错)

重启ideal 运行你的程序,一般就没问题了

重点
如果你是win10上述问题解决了但是只执行show tables 、show databases类似的语句不能执行select语句,或者执行了报错如下

修改方案:在程序运行前,添加`-Djava.library.path=$HADOOP_HOME/lib/native`参数,如果是idea,是下面这个位置

 

 

 

IDEA中sparksession连接hive的种种问题

参考链接:https://blog.csdn.net/Coder__CS/article/details/79128222

参考链接:https://blog.csdn.net/zgjdzwhy/article/details/71056801

 

 

IDEA中sparksession连接hive的种种问题相关教程

  1. IntelliJ Idea --- 集成 Alibaba Cloud Toolkit 实现一键部署
  2. idea初使用
  3. 使用mqtt.fx模拟真实设备连接阿里云平台
  4. 使用 IntelliJ IDEA将项目上传到码云提示Push rejected Push to
  5. SVN连接不上提示Error running context The server unexpectedly
  6. Idea 常用功能汇总工作中常用技巧移出请说明原因笔记花了好长时
  7. 生态大会做企业专属的连接器 企业微信与合作伙伴助力企业数字化
  8. IDEA搭建Mybatis项目时报错java.io.IOException Could not find