我在S3上有一堆Parquet文件,我想以最佳方式将它们加载到redshift中。
每个文件都分成多个块……将数据从S3加载到Redshift的最佳方法是什么?
此外,如何在Redshift中创建目标表定义?有没有办法从Parquet推断模式并以编程方式创建表?我相信有一种方法可以使用Redshift频谱来做到这一点,但是我想知道是否可以在脚本中完成。
感谢您的帮助!
我正在考虑使用所有AWS工具(例如Glue,Lambda等)以最佳方式做到这一点(在性能,安全性和成本方面)。
答案 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
文件指定映射