我正在尝试将存储在HDFS(文本文件)上的数据集加载到配置单元中进行分析。 我正在使用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上发现了关于这个问题的this issue。它似乎没有得到解决。
答案 0 :(得分:3)
部分回答我自己的问题:
事实上,此时蜂巢似乎无法解决。但这是一个有趣的事实:hive不需要对文件本身进行写访问,而只需要对文件夹进行写访问。例如,您可以拥有一个具有权限777
的文件夹,但其中的文件(由hive访问)可以保持只读,例如644
。
答案 1 :(得分:1)
如果需要对hdfs文件的写访问权限 hadoop dfs -chmod 777 /文件夹名称
这意味着您授予该特定文件的所有访问权限。
答案 2 :(得分:1)
我没有解决方案,但作为解决方法,我发现了
CREATE TEMPORARY EXTERNAL TABLE
在没有写入权限的情况下工作,区别在于会话后表格会消失。