【问题标题】:Offloading data files from Amazon Redshift to Amazon S3 in Parquet format以 Parquet 格式将数据文件从 Amazon Redshift 卸载到 Amazon S3
【发布时间】:2018-07-18 07:47:23
【问题描述】:

我想以 Apache Parquet 格式将数据文件从 Amazon Redshift 卸载到 Amazon S3,以便使用 Redshift Spectrum 查询 S3 上的文件。我已经探索了每一个地方,但我找不到任何关于如何使用 Parquet 格式将文件从 Amazon Redshift 卸载到 S3 的信息。是否尚不支持此功能,或者我无法找到任何有关它的文档。有谁在这方面工作过吗?谢谢。

【问题讨论】:

    标签: amazon-redshift parquet amazon-athena amazon-redshift-spectrum


    【解决方案1】:

    从 2019 年 12 月起支持 Redshift 卸载到 Parquet 文件格式:

    UNLOAD ('select-statement')
    TO 's3://object-path/name-prefix'
    FORMAT PARQUET
    

    Redshift Features中提到

    并且也在Unload Document更新

    Unload Examples Document中提供了一个示例

    官方文档摘录:

    以下示例以 Parquet 格式卸载 LINEITEM 表,按 l_shipdate 列分区。

    unload ('select * from lineitem')
    to 's3://mybucket/lineitem/'
    iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
    PARQUET
    PARTITION BY (l_shipdate);
    

    假设有四个切片,生成的 Parquet 文件会动态分区到各个文件夹中。

    s3://mybucket/lineitem/l_shipdate=1992-01-02/0000_part_00.parquet
                                                 0001_part_00.parquet
                                                 0002_part_00.parquet
                                                 0003_part_00.parquet
    s3://mybucket/lineitem/l_shipdate=1992-01-03/0000_part_00.parquet
                                                 0001_part_00.parquet
                                                 0002_part_00.parquet
                                                 0003_part_00.parquet
    s3://mybucket/lineitem/l_shipdate=1992-01-04/0000_part_00.parquet
                                                 0001_part_00.parquet
                                                 0002_part_00.parquet
                                                 0003_part_00.parquet
    

    【讨论】:

    • 嗨,secdatabase,欢迎来到 StackOverflow。链接到外部网站可能很有用,但请简要总结其中的要点,以防将来链接中断。
    【解决方案2】:

    你不能这样做。 Redshift 不了解 Parquet(尽管您可以通过 Spectrum 抽象读取 Parquet 文件)。

    您可以UNLOAD 到文本文件。它们可以是encrypted or zipped,但它们只是纯文本文件。


    看起来现在支持:

    https://aws.amazon.com/about-aws/whats-new/2018/06/amazon-redshift-can-now-copy-from-parquet-and-orc-file-formats/

    【讨论】:

    • 澄清一下 - 提到的博文是关于复制 INTO Redshift,而不是复制到 S3。
    【解决方案3】:

    “Spectrify”是一个很棒的解决方案,但如果您不想使用 AWS 服务来做这件事;您可以使用 EMR + Databricks 上的 Spark 从 Redshift 读取数据并以 parquet 格式将其写入 S3。

    下面的链接会给你一个想法来做同样的事情

    https://github.com/aws-samples/aws-big-data-blog/tree/master/aws-blog-spark-parquet-conversion

    【讨论】:

      【解决方案4】:

      有点晚了,但Spectrify 正是这样做的。

      【讨论】:

      • 你有关于如何配置 s3 路径和 aws 凭据以从 python 脚本进行 spectrify 的任何文档吗?
      【解决方案5】:

      遗憾的是,到目前为止,AWS Redshift 并未扩展其读取 parquet 格式的能力。

      尽管您可以执行以下操作之一:

      1. 使用 AWS Spectrum 阅读它们。
      2. 使用来自 Amazon Glue 的爬虫为您转换它。

      直到今天,AWS 中还没有现成的 Apache Parquet 支持。

      我希望这会有所帮助。

      【讨论】:

      • 问题是关于从 Redshift 中获取数据。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-15
      • 2023-01-03
      • 2018-09-12
      • 2018-05-13
      • 1970-01-01
      相关资源
      最近更新 更多