Да. Для такого преобразования можно использовать EMR.
Вот пример кода для преобразования данных, поступающих в формате csv (папка stg или исходная папка) в формат файла orc.Возможно, вы захотите выполнить перезапись вставки, если у вас есть перекрывающиеся разделы между вашими промежуточными файлами (или исходными файлами) и целевыми файлами
DROP TABLE IF EXISTS db_stg.stg_table;
CREATE EXTERNAL TABLE `db_stg.stg_table`(
GEO_KEY string,
WK_BEG_DT string,
FIS_WK_NUM Double,
AMOUNT1 Double
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
LOCATION
's3://bucket.name/stg_folder_name/'
TBLPROPERTIES ('has_encrypted_data'='false');
drop table db_tgt.target_table;
CREATE EXTERNAL TABLE db_tgt.target_table(
GEO_KEY string,
FIS_WK_NUM Double,
AMOUNT1 Double
)
PARTITIONED BY(FIS_WK_NUM)
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://bucket.name/tgt_folder_name/'
TBLPROPERTIES (
'orc.compress'='SNAPPY');
set hive.exec.dynamic.partition.mode=nonstrict;
insert overwrite table db_tgt.target_table partition(FIS_WK_NUM)
select
GEO_KEY ,
WK_BEG_DT ,
FIS_WK_NUM ,
AMOUNT1
from db_stg.stg_table;
Согласитесь с Джоном, что преобразование в формат столбчатых файлов, таких как Parquet или ORC (вместес компрессией, подобной SNAPPY), даст вам лучшую производительность с AWS Athena.
Помните, что ключом к использованию Athena является оптимизация объема данных, которые вы сканируете при чтении.Следовательно, если данные представлены в столбчатом формате и вы читаете определенные разделы, стоимость AWS Athena значительно снизится.Все, что вам нужно сделать, это убедиться, что вы используете условие фильтра в запросах Athena, которое выбирает требуемые разделы.