我有一个hive表,我使用sqoop从Postgres导入。该表由updated_at列组成,该列具有时间戳值。我正在尝试按此时间戳值的年份和月份对表进行分区。有没有办法从时间戳中提取部件以在分区语句中使用。
我当前的策略是将表直接导入hive,然后创建一个分区表并使用INSERT OVERWRITE TABLE用分区填充表。
CREATE TABLE zips_part(id int,code string,timezone_offset int, timezone_d boolean) PARTITIONED BY(updated_at timestamp)
下一步是覆盖此表
insert overwrite table zips_part PARTITION(updated_at) select z.id, z.updated_at, z.code, z.timezone_offset, z.timezone_d FROM zip_codes z;
(继续http://kickstarthadoop.blogspot.com/2011/06/how-to-speed-up-your-hive-queries-in.html中提到的步骤)
我尝试使用年份的日期部分功能,但它不起作用。
这个给出了解析错误
insert overwrite table zips_part PARTITION(year(updated_at)) select z.id, z.updated_at, z.code, z.timezone_offset, z.timezone_d FROM zip_codes z;
这个给出了类似的解析错误
insert overwrite table zips_part PARTITION(year=year(updated_at)) select z.id, z.updated_at, z.code, z.timezone_offset, z.timezone_d FROM zip_codes z;