我可以访问Hadoop集群,而我可以只读访问数据所在的hdfs文件夹(在本例中为/ data / table1 / data_PART0xxx)。我想建立一个HIVE EXTERNAL表,这将为我提供查询数据的简便方法。
因此,我创建了一个表,如下所示:
CREATE EXTERNAL TABLE myDB.Table1 (column1 STRING, column2 STRING, column3 STRING)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe'
WITH SERDEPROPERTIES (
"input.regex" = "(.{10})(.{16})(.{10})"
)
LOCATION '/data/table1';
但是,它给了我错误:
错误:编译语句时出错:失败:HiveAccessControlException权限被拒绝:用户[my_user]对[hdfs:// hadoopcluster / data / table1]不具有[ALL]特权(状态= 42000,代码= 40000)>
据我了解,我无权写任何东西,但是我该怎么做,以便将该表明确定义为只读?
编辑:我知道我可以将其设置为 CREATE TEMPORARY EXTERNAL TABLE ... ,但是我想有一个更永久的解决方案。此外,我也没有特权将文件夹/ data / table1设置为777模式。没有办法告诉HIVE,该表仅用于查询,不会再添加任何数据(至少不是通过HIVE) )。
编辑:此外,自2009年以来,我已经看到JIRA ticket设置为重要,但仍未解决。