gpt4 book ai didi

python - 为什么配置单元试图在 hdfs 中写入/用户?

转载 作者:可可西里 更新时间:2023-11-01 16:32:52 27 4
gpt4 key购买 nike

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

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

{{table}} 部分只是通过 Jinja2 使用的运行器代码插入。我正在使用来自 python 的 subprocess.Popen 在配置单元命令行上使用 -e 标志运行我的查询。

出于某种原因,此设置试图写入 HDFS 中的常规 /user 目录? Sudo 命令无效。产生的错误如下:

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 语句需要一个输出位置?

最佳答案

Hive 是 MapReduce 的 SQL 前端,因此需要编译和暂存 Java 代码才能执行。它不是试图将输出放在那里,而是将要执行的程序。根据您的 Hadoop 版本,这由变量控制:

mapreduce.jobtracker.staging.root.dir

在 YARN/Hadoop 2 上:

yarn.app.mapreduce.am.staging-dir

这些在 mapred-site.xml 中设置。

您的运行器需要通过集群的身份验证,并有一个可以使用的可写目录。

关于python - 为什么配置单元试图在 hdfs 中写入/用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21784631/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com