10

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

4

5 回答 5

12

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

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

它在Redshift Features中提到

并在卸载文档中更新

使用卸载示例文档中提供的示例

官方文档摘录:

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

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
于 2019-12-04T16:03:40.650 回答
7

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

于 2018-02-22T15:38:43.980 回答
3

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

你可以UNLOAD到文本文件。它们可以被加密或压缩,但它们只是纯文本文件。


看起来现在支持:

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

于 2018-02-07T22:00:04.960 回答
1

不幸的是,到目前为止,AWS Redshift 并没有扩展其读取 parquet 格式的能力。

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

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

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

我希望这有帮助。

于 2018-02-08T09:25:51.770 回答
0

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

以下链接将为您提供相同的想法

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

于 2018-05-11T07:18:35.267 回答