Postgresql 基于时间戳列中的年/月划分配置单元表

Postgresql 基于时间戳列中的年/月划分配置单元表,postgresql,hadoop,hive,sqoop,hiveql,Postgresql,Hadoop,Hive,Sqoop,Hiveql,我有一个配置单元表,我正在使用sqoop从Postgres导入它。此表由更新的_at列组成,该列具有时间戳值。我试图从这个时间戳值开始,按年份和月份对表进行分区。是否有任何方法可以从时间戳中提取要在分区语句中使用的部分 我目前的策略是将表直接导入配置单元,然后创建一个分区表,并使用INSERT OVERRIDE table用分区填充该表 CREATE TABLE zips_part(id int,code string,timezone_offset int, timezone_d boolea

我有一个配置单元表,我正在使用sqoop从Postgres导入它。此表由更新的_at列组成,该列具有时间戳值。我试图从这个时间戳值开始,按年份和月份对表进行分区。是否有任何方法可以从时间戳中提取要在分区语句中使用的部分

我目前的策略是将表直接导入配置单元,然后创建一个分区表,并使用INSERT OVERRIDE 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;
(按照中提到的步骤进行)

我试着在年份上使用日期部分函数,但不起作用

这一个给出了一个解析错误

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;
这一个给出了一个类似的解析错误

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;

我没有读到那篇文章中的一个问题…一个必须阅读的内容:关于动态分区的配置单元文档顺便问一下,如果你想按月分区,为什么要将分区键定义为时间戳?????????????格式为
yyyy-mm
的普通字符串将更易于管理…您没有指定解析错误,但您只是在分区内的语法方面遇到了困难吗?你知道
摘录(更新日期的年份)
语法吗?@abhiver222你找到这个问题的解决方案了吗。我也在尝试做同样的事情,但也面临着类似的解析问题。我没有读到那篇文章中的一个问题…一个必须阅读的内容:关于动态分区的配置单元文档顺便问一下,如果你想按月分区,为什么要将分区键定义为时间戳?????????????格式为
yyyy-mm
的普通字符串将更易于管理…您没有指定解析错误,但您只是在分区内的语法方面遇到了困难吗?你知道
摘录(更新日期的年份)
语法吗?@abhiver222你找到这个问题的解决方案了吗。我正试图做同样的事情,并面临类似的解析问题。