我使用hive Hive 1.0.0-amzn-3 , 在此版本中,hive动态创建分区,它忽略分区字段类型的类型。在我的例子中,它创建前导零的分区,而字段类型是整数。
day_ts=16/hour_ts=05
当我将hive升级到 Hive 2.1.1-amzn-0 时 行为发生了变化,新分区与字段类型对齐,并删除了前导零。
day_ts=16/hour_ts=4
感谢任何导致如何让hive 2.1保持领先零。 感谢。
以下是
的示例CREATE EXTERNAL TABLE `partitions_hell`(
`a` string COMMENT,
`b` string COMMENT
)
PARTITIONED BY (
`day_ts` bigint,
`hour_ts` int)
ROW FORMAT SERDE
'org.apache.hadoop.hive.ql.io.orc.OrcSerde'
STORED AS INPUTFORMAT
'org.apache.hadoop.hive.ql.io.orc.OrcInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat'
LOCATION
's3://xarkadiy-snbx/partitions_hell'
TBLPROPERTIES (
'orc.compress'='SNAPPY'
)
在hive 1.0.0中运行以下查询
INSERT INTO TABLE partitions_hell_arkadiy partition(day_ts=16, hour_ts=05)
SELECT '11',
'rwr'
FROM partitions_hell_arkadiy
在hive 2.1.0中运行以下查询
INSERT INTO TABLE partitions_hell_arkadiy partition(day_ts=16, hour_ts=04)
select '131', 'rw33rr'
from partitions_hell_arkadiy
结果:
hive> show partitions default.partitions_hell
> ;
OK
day_ts=16/hour_ts=05
day_ts=16/hour_ts=4
Time taken: 0.111 seconds, Fetched: 5 row(s)