【发布时间】:2019-03-28 13:12:32
【问题描述】:
所以,我有一个表,数据按 datetime(dt) 分区并存储在 S3 中,分区如下所示
dt=2019-03-22/
dt=2019-03-23/
dt=2019-03-24/
等等,我想做的是改变我如何将数据从这种模式分区到这样的子分区
年=2019/月=03/日=22/
年=2019/月=03/日=23/
年=2019/月=03/日=24/
但我不想更改原始表,因此我创建了一个外部表,它指向 S3 中的另一个位置,这将是这个新分区模式的位置。我尝试使用(与原始模式相同的模式)创建一个指向该位置的表
CREATE EXTERNAL TABLE `test_partition_new`(
`order_id` string,
`outlet_code` string,
.
.
.
.
`business_date` string,
.
.
.
.
)
PARTITIONED BY (
`year` string,
`month` string,
`day` string)
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://data-test/test_partition/db.new_partition/'
TBLPROPERTIES (
'orc.compress'='SNAPPY',
)
将分别按年、月和日划分。所以据我了解,我应该将原始表中的数据插入到这个表中。我应该如何将数据插入到这个新表中,该表的分区日期来自列“business_date”,其中包含“2019-03-20”等数据。有没有什么函数可以把这列分成年月日三列
【问题讨论】: