将Parquet文件加载到Redshift

时间:2018-09-05 23:27:57

标签: amazon-web-services amazon-ec2 amazon-redshift parquet amazon-redshift-spectrum

我在S3上有一堆Parquet文件,我想以最佳方式将它们加载到redshift中。

每个文件都分成多个块……将数据从S3加载到Redshift的最佳方法是什么?

此外,如何在Redshift中创建目标表定义?有没有办法从Parquet推断模式并以编程方式创建表?我相信有一种方法可以使用Redshift频谱来做到这一点,但是我想知道是否可以在脚本中完成。

感谢您的帮助!

我正在考虑使用所有AWS工具(例如Glue,Lambda等)以最佳方式做到这一点(在性能,安全性和成本方面)。

2 个答案:

答案 0 :(得分:2)

Amazon Redshift COPY command可以使用以下参数本地加载Parquet文件:

FORMAT AS PARQUET

请参阅:Amazon Redshift Can Now COPY from Parquet and ORC File Formats

该表必须是预先创建的;它无法自动创建。

还请注意COPY from Columnar Data Formats - Amazon Redshift中的信息:

  

COPY将值按与列数据文件中出现的列相同的顺序插入到目标表的列中。目标表中的列数和数据文件中的列数必须匹配。

答案 1 :(得分:1)

使用来自GitHub的parquet-tools剖析文件:

parquet-tool schema <filename> #will dump the schema w/datatypes
parquet-tool head <filename> #will dump the first 5 data structures

使用jsonpaths文件指定映射