Итак, у меня есть таблица, данные которой разделены по дате и времени (dt) и сохранены в S3, который выглядит следующим образом
дт = 2019-03-22 /
дт = 2019-03-23 /
дт = 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». Существуют ли функции, которые могут разделить этот столбец на три столбца, содержащие год, месяц и день