Как загрузить все разделы скриптами в AWS Athena? - PullRequest
0 голосов
/ 25 октября 2018

У меня есть S3 bucket: s3://bucket-name/year=2018/month=xx/day=xx/hour=xx/minute=xx.

Соответственно, у меня есть 5 столбцов разделов в моей таблице AWS Athena (год, месяц, день, час, минута).

Я хочу загрузитьвсе данные за октябрь. Я пытался

ALTER TABLE table_name add partition (all 5 partitions)
location "s3://data/year=xx/month=xx/.......";

Однако мне нужно написать эту команду «alter table» для всех разделов минутного уровня, что невозможно.

Возможно линаписать скрипт в AWS Athena для загрузки всех разделов?

1 Ответ

0 голосов
/ 26 октября 2018

Это возможно с помощью команды MSCK REPAIR TABLE.

https://docs.aws.amazon.com/athena/latest/ug/partitions.html

Прежде всего вам необходимо создать таблицу, аналогичную приведенной ниже.

CREATE EXTERNAL TABLE `example`(
col1 string,
col2 string)
PARTITIONED BY ( 
`year` int, `year` `month`,`day`,`hour`,`minute`)
ROW FORMAT DELIMITED 
FIELDS TERMINATED BY ',' 
STORED AS INPUTFORMAT 
'org.apache.hadoop.mapred.TextInputFormat' 
OUTPUTFORMAT 
'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
's3://data'

После этого вы сможете выполнить команду «MSCK REPAIR TABLE».

Если вы хотите продолжить использовать команду «alter table add parition», вам нужно будет создать собственный скрипт.В этом случае это будет обычный драйвер boto3 или jdbc athena:

https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/athena.html#Athena.Client.start_query_execution

https://docs.aws.amazon.com/athena/latest/ug/connect-with-jdbc.html

...