如何为 Hive HQL 脚本设置 umask?是通过脚本中的语句还是通过在运行脚本之前设置的客户端配置?我想在客户端进行更改而不更改服务器端配置。
我发现这可以在 shell 提示符下工作,但我想在 hive 脚本中进行。
$ hdfs dfs -Dfs.permissions.umask-mode=000 -mkdir /user/jeff/foo
$ hdfs dfs -Dfs.permissions.umask-mode=000 -put bar /user/jeff/foo
这些尝试不起作用:
hive> dfs -mkdir -Dfs.permissions.umask-mode=000 /user/jeff/foo;
-mkdir: Illegal option -Dfs.permissions.umask-mode=000
hive> dfs -Dfs.permissions.umask-mode=000 -mkdir /user/jeff/foo;
-Dfs.permissions.umask-mode=000: Unknown command
在 .hiverc 中设置 hive.files.umask.value 并没有达到预期的效果(未设置 g+w 和 o+w 位,这是我试图用这个 umask 做的。):
hive> set hive.files.umask.value;
hive.files.umask.value=000
hive> dfs -mkdir /user/jeff/foo;
hive> dfs -ls -d /user/jeff/foo;
drwxr-xr-x - jeff hadoop 0 2016-02-23 15:19 /user/jeff/foo
看起来我需要在我的 HQL 脚本中添加一堆“dfs -chmod 777 ...”语句。
想法??