spark 读取 hive 报错:Permission denied: user=xxx, access=EXECUTE, inode="/tmp":root:supergroup:drwx

描述错误

在windows编写代码,运行程序,读取hdfs上的hive数据,使用的windows的用户。
在读取时,需要向 HDFS 的 /tmp 目录下写数据,该目录只认 root 用户。
所以导致权限问题,报错如下:

Exception in thread "main" org.apache.spark.sql.AnalysisException: java.lang.RuntimeException: org.apache.hadoop.security.AccessControlException: Permission denied: user=mym, access=EXECUTE, inode="/tmp":root:supergroup:drwx------

解决方式一

在要执行的文件 点右键,如按下图点击:

在上图红框处加上下面配置,表示以 root 用户运行:

HADOOP_USER_NAME=root

解决方式二

如果【解决方式一】不行,一般是工程的问题,重新创建工程

解决方式三

如果上面方式 都不行,在第一行加上下面代码:

System.setProperty("HADOOP_USER_NAME", "root")