Redshift Spectrumを使用してS3上のファイルをクエリするために、Apache Parquet形式でAmazon RedshiftからAmazon S3にデータファイルをアンロードしたいと思います。私はあらゆる場所を調査しましたが、Parquet形式を使用してAmazon RedshiftからS3にファイルをオフロードする方法について何も見つかりませんでした。この機能はまだサポートされていませんか、それともドキュメントに関する情報を見つけることができませんでしたか?それに取り組んだ誰かがこれについていくつかの光を共有できますか?ありがとうございました。
少し遅れますが、 Spectrify はこれを正確に実行します。
Redshift Unload to Parquetファイル形式は、2019年12月の時点でサポートされています。
UNLOAD ('select-statement')
TO 's3://object-path/name-prefix'
FORMAT PARQUET
Redshift Features で言及されています
nload Document でも更新されました
nload Examples Document で提供される例
公式ドキュメントの抜粋:
次の例は、LINEITEMテーブルをl_shipdate列で分割されたParquet形式でアンロードします。
unload ('select * from lineitem')
to 's3://mybucket/lineitem/'
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
PARQUET
PARTITION BY (l_shipdate);
4つのスライスを想定すると、結果の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
これはできません。 RedshiftはParquetを認識していません(ただし、Spectrum抽象化を通じてParquetファイルを読み取ることができます)。
テキストファイルにUNLOAD
できます。 暗号化または圧縮 にすることもできますが、フラットテキストファイルのみです。
これは現在サポートされているようです:
残念ながら、これまでのところ、AWS Redshiftは寄木細工の形式を読み取る機能を拡張していません。
ただし、次のいずれかを実行できます。
現在まで、AWSのApache Parquetはサポートされていません。
これがお役に立てば幸いです。
優れたソリューション「Spectrify」はこれを実行しますが、AWSサービスを使用して実行したくない場合は、 EMR + DatabricksでSparkを使用してRedshiftからデータを読み取り、それを寄木細工の形式でS3に書き込むことができます。
次のリンクはあなたに同じことをするアイデアを与えるでしょう
https://github.com/aws-samples/aws-big-data-blog/tree/master/aws-blog-spark-parquet-conversion