配置单元添加分区语句忽略前导零
hive add partition statement ignores leading zero
我在 hdfs 上有文件夹
/user/test/year=2016/month=04/dt=25/000000_0
需要将上述分区路径添加到 test table.
命令:
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/
table 将指向 /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
如果分区文件夹已经创建,您可以使用MSCK REPAIR TABLE test
。它将扫描所有目录并创建新分区。有关详细信息,请访问 Hive Language Manual。或者您应该对分区列使用 STRING 而不是 INT。
您正在为分区使用整数类型。如果您需要前导零而不是使用字符串分区和引号:ALTER TABLE test ADD IF NOT EXISTS PARTITION (year='2016',month='04',dt='25')
我在 hdfs 上有文件夹
/user/test/year=2016/month=04/dt=25/000000_0
需要将上述分区路径添加到 test table.
命令:
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/
table 将指向 /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
如果分区文件夹已经创建,您可以使用MSCK REPAIR TABLE test
。它将扫描所有目录并创建新分区。有关详细信息,请访问 Hive Language Manual。或者您应该对分区列使用 STRING 而不是 INT。
您正在为分区使用整数类型。如果您需要前导零而不是使用字符串分区和引号:ALTER TABLE test ADD IF NOT EXISTS PARTITION (year='2016',month='04',dt='25')