为什么hive试图在hdfs中写入/user?

bvk5enib  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(330)

使用简单的hiveql查询,如下所示:

SELECT event_type FROM {{table}} where dt=20140103 limit 10;

这个 {{table}} 零件只是通过运行程序代码im通过jinja2插入的。我正在使用 -e 在配置单元命令行上使用 subprocess.Popen 来自python。
由于某些原因,此安装程序正在尝试写入常规 /user hdfs中的目录?执行命令无效。产生的误差如下:

Job Submission failed with exception:
org.apache.hadoop.security.AccessControlException(Permission denied:user=username, access=WRITE, inode="/user":hdfs:hadoop:drwxrwxr-x\n\tat org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.check(FSPermissionChecker.java:234)

为什么Hive会试图写信给 /users ? 另外,为什么像这样的select语句需要一个输出位置?

2wnc66cl

2wnc66cl1#

hive是mapreduce的sql前端,因此需要编译和暂存java代码以供执行。它不是试图把输出放在那里,而是它将执行的程序。根据您的hadoop版本,这由以下变量控制:

mapreduce.jobtracker.staging.root.dir

在yarn/hadoop 2上:

yarn.app.mapreduce.am.staging-dir

这些设置在mapred-site.xml中。
您的运行程序需要通过集群的身份验证,并且有一个可以使用的可写目录。

相关问题