【发布时间】:2015-10-05 07:13:46
【问题描述】:
我正在使用 Cloudera 5.3.3 Hive。
我正在尝试执行以下查询,
shell>pwd
/home
shell> mkdir test; chmod 777 test;
shell> ls -al
drwxrwxrwx 3 jai jai 4096 Oct 5 06:45 test
hive query>INSERT OVERWRITE LOCAL DIRECTORY '/home/test/test1' SELECT * FROM some_table;
当我从 hive 客户端执行时,它工作正常,并在 /home/test 文件夹中创建输出文件,但如果我从 执行相同的操作,它不会创建文件直线。
从运行 Hive 服务器 2 的机器通过 beeline 连接到 Hive 服务器 2。
我以 jai 用户的身份从直线连接 hive。 文件夹 /home/test
相同的查询,如果我指向 /tmp 文件夹(其中 test 文件夹具有 777 权限),则工作正常。它将 mapreduce 输出复制到 test1 文件夹中,该文件夹具有以下权限并创建为 hive 用户。
shell>pwd
/tmp
shell> ls -al
drwxrwxrwx 5 jai jai 4096 Oct 5 06:40 test
beeline as jai user> INSERT OVERWRITE LOCAL DIRECTORY '/tmp/test/test1' SELECT * FROM some_table;
shell> cd test;
shell> ls -al
drwxr-xr-x 3 hive hive 4096 Oct 5 06:37 test1
【问题讨论】:
-
会不会是安全设置?例如,您可以在 Sentry 中授予/拒绝对 HiveServer2 的特权,旧版 Hive 客户端不会尊重这些特权。
-
@HellmarBecker 并且 HiveServer2 日志中没有错误条目。
-
我面临着类似的问题。你能解决这个问题吗?