我正在尝试将存储在hdfs(textfile)上的数据集加载到配置单元中进行分析。我正在使用create external table,如下所示:
CREATE EXTERNAL table myTable(field1 STRING...)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
STORED AS TEXTFILE
LOCATION '/user/myusername/datasetlocation';
这可以正常工作,但它需要对hdfs位置的写访问权限。为什么?
一般来说,加载我没有写访问权限的文本数据的正确方法是什么?是否存在“只读”外部表类型?
编辑:我注意到这个问题的Hive有关的问题。似乎还没有解决。
3条答案
按热度按时间lf3rwulv1#
我没有办法解决这个问题,但作为一个解决办法,我发现
CREATE TEMPORARY EXTERNAL TABLE
在没有写权限的情况下工作,不同之处在于表(而不是底层数据)将在会话后消失。xhv8bpkk2#
部分回答了我自己的问题:
事实上,在这个时刻,Hive似乎无法解决这个问题。但这里有一个有趣的事实:hive不需要对文件本身的写访问,只需要对文件夹的写访问。例如,您可以拥有一个具有权限的文件夹
777
,但其中由配置单元访问的文件可以保持只读,例如。644
.mf98qq943#
如果需要对hdfs文件进行写访问,请提供hadoop dfs-chmod 777/文件夹名
这意味着您将授予对该特定文件的所有访问权限。