Amazon S3 内の特定のパーティションで AWS Glue ジョブを実行するにはどうすればよいですか?

所要時間1分
0

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')" )

AWS公式
AWS公式更新しました 1年前