【问题标题】:Load Parquet files into Redshift将 Parquet 文件加载到 Redshift
【发布时间】:2019-02-11 03:47:43
【问题描述】:

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

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

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

感谢您的帮助!

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

【问题讨论】:

  • 如果你打算使用glue,那么创建一个并直接在spectral中使用glue metastore。如果你想定期更新metastore,glue爬虫很有帮助

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


【解决方案1】:

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 将值插入到目标表的列中按照列在列数据文件中出现的顺序。目标表的列数和数据文件的列数必须匹配。

【讨论】:

  • 感谢 John 的回复,在我的情况下,我只有 Parquet 文件,如何识别架构?我做了“Glue crawler”,但不确定我是否可以自动执行此操作并将爬虫输出导出到与 postgres 兼容的 CREATE TABLE 语句.....
  • 我猜你需要find a tool 才能提取架构。
【解决方案2】:

使用来自 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 文件指定映射

【讨论】:

    猜你喜欢
    • 2020-12-30
    • 1970-01-01
    • 1970-01-01
    • 2018-07-18
    • 1970-01-01
    • 2017-12-30
    • 1970-01-01
    • 2023-03-27
    • 2020-01-03
    相关资源
    最近更新 更多