今天在往hive中写数据时,使用的save方法直接把数据写入到hdfs目录,结果报错。
场景:在本地使用IDEA开发进行远程提交,把结果数据写入到HIVE。
写入的方法:
df.write.mode(SaveMode.Append).save("hdfs://apps/hive/warehouse/info_test.db/result")
出现的错误:
org.apache.hadoop.security.AccessControlException: Permission denied: user=Admin, access=WRITE,
inode="/apps/hive/warehouse/info_test.db/result":hive:hdfs:drwxrwxr-x
BUG原因:
远程提交的情况下如果没有hadoop 的系统环境变量,就会读取当前主机的用户名,所以Hadoop集群的节点中没有该用户名的权限,所以出现的异常。
在网上查询了很多资料,大部分说需要修改集群的配置。而我们不能因为一个错误就去动集群的配置,这显然是不可取的。
解决办法:
def main(args: Array