【问题标题】:hive add partition statement ignores leading zerohive add partition 语句忽略前导零
【发布时间】:2016-10-27 07:19:05
【问题描述】:

我在 hdfs 上有文件夹
/user/test/year=2016/month=04/dt=25/000000_0

需要将上述分区路径添加到test表中。

命令:

ALTER TABLE test ADD IF NOT EXISTS PARTITION (year=2016,month=04,dt=25)

但是这个添加分区命令忽略了月份分区中的前导零,并在 2016 内创建了一个额外的文件夹作为月份 = 4。 /user/test/year=2016/month=04/ /user/test/year=2016/month=4/ 并且表将指向/user/test/year=2016/month=4/这个不包含任何数据的路径。

我检查了日志,上面写着 WARN org.apache.hadoop.hive.ql.parse.BaseSemanticAnalyzer - Partition Spec month=04 has been changed to month=4

如果有人遇到这种问题以及如何避免这种情况,请告诉我?

Hive 版本是:1.2.1000

【问题讨论】:

    标签: hadoop hive hadoop-yarn hive-partitions hiveddl


    【解决方案1】:

    您正在为分区使用整数类型。如果您需要前导零而不是使用字符串分区和引号:ALTER TABLE test ADD IF NOT EXISTS PARTITION (year='2016',month='04',dt='25')

    【讨论】:

    • 是的,我使用了引号。
    【解决方案2】:

    如果分区文件夹已经创建,您可以使用MSCK REPAIR TABLE test。它将扫描所有目录并创建新分区。欲了解更多详情,请访问Hive Language Manual。或者你应该对分区列使用 STRING 而不是 INT。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-19
      • 1970-01-01
      • 2016-05-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多