【问题标题】:Modify partition column value修改分区列值
【发布时间】:2016-07-16 06:44:47
【问题描述】:

我可以通过更改分区目录的名称来修改分区表的值吗?

我现在拥有的表有年份和月份作为分区。这些值存储为十进制,因此分区是“2016.0”而不是“2016”和“3.0”而不是“3”。

我可以只重命名目录并更新分区中的值吗?

【问题讨论】:

  • 所以我想运行一个测试,但我没有看到任何用于重命名目录的 hdfs 命令。所以这可能没有实际意义。
  • 我希望做这样的事情hadoop fs -rename /dev/.../year=2016.0/month=4.0 /dev/.../year=2016.0/month=4 ,但这不起作用。
  • 我试过这个:> hadoop fs -mv /dev/.../year=2016.0/month=4.0 /dev/.../year=2016.0/month=4,它成功了,因为它移动了目录,但现在对表的查询不再有效,因为 hive Caused by: java.util.concurrent.ExecutionException: java.io.FileNotFoundException: File hdfs://prodmid/dev/.../year=2016.0/month=4.0 does not exist.
  • 将它移回来使它再次工作。

标签: hive partition


【解决方案1】:

先重命名目录:

hadoop fs -mv /dev/year=2016.0 /dev/year=2016
hadoop fs -mv /dev/year=2016/month=4.0 /dev/year=2016/month=4

让 hive 元存储知道新的位置/分区:

ALTER TABLE logs PARTITION(year = 2014, month = 4) 
SET LOCATION 'hdfs://dev/year=2016/month=4';

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-19
    • 1970-01-01
    相关资源
    最近更新 更多