Amazon S3 の特定のパーティションで AWS Glue ジョブを実行する方法を教えてください。

最終更新日: 2019 年 10 月 10 日

Amazon Simple Storage Service (Amazon S3) ロケーションの特定のパーティションで AWS Glue ジョブを実行する方法を教えてください。

簡単な説明

AWS Glue データカタログのパーティションをフィルターするには、プッシュダウン述語を使用します。フィルター変換とは異なり、プッシュダウン述語を使用すると、データセット内のすべてのファイルを一覧表示して読み取ることなく、パーティションをフィルター処理できます。

解決方法

AWS Glue ジョブを作成し、DynamicFrame でプッシュダウン述語を指定します。次の例で、ジョブは s3://awsexamplebucket/product_category=Video パーティション内のデータのみを処理します。

datasource0 = glueContext.create_dynamic_frame.from_catalog(database = "testdata", table_name = "sampletable", transformation_ctx = "datasource0",push_down_predicate = "(product_category == 'Video')")

日付でフィルターするプッシュダウン述語の例を次に示します。この例で、ジョブは s3://awsexamplebucket/year=2019/month=08/day=02 パーティション内のデータのみを処理します。

datasource0 = glueContext.create_dynamic_frame.from_catalog(database = "testdata", table_name = "sampletable", transformation_ctx = "datasource0",push_down_predicate = "(year == '2019' and month == '08' and day == '02')")

以下は、非 Hive スタイルのパーティションを日付でフィルター処理するプッシュダウン述語の例です。この例で、ジョブは s3://awsexamplebucket/2019/07/03 パーティション内のデータのみを処理します。

datasource0 = glueContext.create_dynamic_frame.from_catalog(database = "testdata", table_name = "sampletable", transformation_ctx = "datasource0",push_down_predicate ="(partition_0 == '2019' and partition_1 == '07' and partition_2 == '03')" )

この記事はお役に立ちましたか?

改善できることはありますか?


さらにサポートが必要な場合