impala中 alter table add partition 对HDFS文件权限的影响

偶然的机会发现用其他用户重写impala用户下的分区数据时有些表报错,有些表不报错,重写报错信息(Error while processing statement: FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.MoveTask. Exception when loading 1 in table)。都是用impala用户插入的分区数据有些HDFS文件权限是755,有些权限是777。最后发现是因为是否执行alter table   add    partition影响的。

测试如下:

首先创建一个分区表:

 CREATE  TABLE p3edwadm.tab_test (
  id STRING,
  name STRING
)
PARTITIONED BY (
  date_timekey STRING, 
  hour STRING
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '|'
STORED AS PARQUET

查看此时后台文件的权限是777(黏贴位可忽略,也可去除,对本实验不影响)

drwxrwxrwt   - impala    hive                0 2021-11-09 10:13 /user/hive/warehouse/p3edwadm.db/tab_test

不手动添加分区,直接插入分区数据,发现文件权限是755

INSERT OVERWRITE TABLE test.tab_test
PARTITION(date_timekey,hour)
select   '1','ee','20211101','202111010730'


 hdfs dfs -ls /user/hive/warehouse/test.db/tab_test
Found 2 items
drwxrwxrwt   - impala hive          0 2021-11-09 10:43 /user/hive/warehouse/test.db/tab_test/_impala_insert_staging
drwxr-xr-x   - impala hive          0 2021-11-09 10:43 /user/hive/warehouse/test.db/tab_test/date_timekey=20211101

手动添加分区之后再插入分区数据,发现文件权限就是777:

Alter table test.tab_test add if not exists  partition (date_timekey='20211102',hour='202111020730') ;
INSERT OVERWRITE TABLE test.tab_test
PARTITION(date_timekey,hour)
select   '1','ee','20211102','202111020730'


 hdfs dfs -ls /user/hive/warehouse/test.db/tab_test
Found 3 items
drwxrwxrwt   - impala hive          0 2021-11-09 10:45 /user/hive/warehouse/test.db/tab_test/_impala_insert_staging
drwxr-xr-x   - impala hive          0 2021-11-09 10:43 /user/hive/warehouse/test.db/tab_test/date_timekey=20211101
drwxrwxrwt   - impala hive          0 2021-11-09 10:45 /user/hive/warehouse/test.db/tab_test/date_timekey=20211102

结论:

        在impala新增分区数据的时候最好手动添加分区后再插入分区数据,以免后续其他用户操作报错。

历史数据可用如下命令进行修改:

 hdfs dfs -chmod 777  /user/hive/warehouse/test.db/tab_test/*

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值