S3中有大量文件,总计数十GB。我们需要将它们转换为CSV格式,当前文件中的分隔符不是逗号。通常,我会在使用sed的服务器上执行此操作,但我不想将文件传输到服务器,我想直接从S3中读取,逐行转换为CSV,然后将结果写回到新的S3文件中
胶水似乎可以做到这一点,但我觉得学习曲线和完成这种简单任务的设置实在是太过分了。
在EMR或某些其他AWS工具中,是否没有一些简单的方法来完成诸如此类的简单任务?我们使用雅典娜,我想知道是否可以在使用雅典娜的SQL语句中完成?谢谢
答案 0 :(得分:1)
是的,这应该非常容易,并且您不需要任何外部ETL工具或胶水。 假设您有一个基于管道分隔文件的,名为“ cust_transaction_pipe”的管道分隔表,并且可以使用Athena查询该表而不会出现任何问题。要将表转换为逗号分隔,只需使用以下查询:
create table cust_transaction_csv
with (external_location = 's3://YOUR_S3_BUCKET_NAME/cust_tx_csv/',format='TEXTFILE',field_delimiter = ',')
as
select * from cust_transaction_pipe
完成后,您可以检查指定的位置。将以逗号分隔。您可以在WITH()中指定许多其他选项。有关完整的选项集,请参阅Athena AWS文档链接here。