插入HCTAS创建的表时拒绝权限

时间:2015-08-06 02:15:21

标签: hadoop hive hdfs teradata

当我使用Teradata的HCTAS程序在Hadoop中创建表时,我遇到了麻烦。

我打电话给HCTAS来创建表格,

CALL SYSLIB.HCTAS('test_table',null,null,'myserver','default');
 *** Procedure has been executed.

但是当我尝试将数据插入该表时,我得到了拒绝的权限。

INSERT INTO test_table@myserver SELECT * FROM test_table;
 *** Failure 7810 [TblOp] Permission denied: user=myuser, access=WRITE, inod
 e="/apps/hive/warehouse/test_table":hive:hdfs:drwxr-xr-x
    at org.apache.hadoo
 p.hdfs.server.namenode.FSPermissionChecker.checkFsPermission(FSPermissionChec
 ker.java:265)
    at org.apache.hadoop.hdfs.s.
            Statement# 1, Info =0

我检查了Hadoop,发现该目录是由所有者创建的,因为' hive'而不是' myuser'。

drwxr-xr-x   - hive hdfs          0 2015-08-05 21:45 /apps/hive/warehouse/test_table

我该怎么做才能使用' myuser'创建目录。作为所有者?

由于

2 个答案:

答案 0 :(得分:0)

第3个参数用于指定目录,请尝试

CALL SYSLIB.HCTAS('test_table',null,'LOCATION "/usr/myuser"','myserver','default');

答案 1 :(得分:0)

正如您所看到的,这是一个写权限问题,因为myuser没有写入/ hive / warehouse /的权限。

另一方面,正如您可以看到here,您可以指定表格的位置,以确保myuser具有写入权限(HDFS中的个人文件夹可能)。这样您就不会有写权限问题。