1回答
- 新しい順
- 投票が多い順
- コメントが多い順
0
AWS Glueでpartitionを使用してS3に出力する際に、partition に使用した項目を残す方法はあります。ただし、標準のwrite_dynamic_frame.from_optionsメソッドでは、デフォルトでpartition列が出力から除外されてしまいます。
この問題を解決するには、カスタムコードを使用する必要があります。Visual editorだけでは十分な柔軟性がないため、custom transformを使用してPythonコードを記述することをお勧めします。
以下のような方法で実現できます:
- まず、DynamicFrameをSparkのDataFrameに変換します。
- DataFrameに対して、partitionBy()メソッドを使用してパーティション化します。
- 同時に、パーティション列を含むすべての列を選択します。
- 最後に、write()メソッドを使用してS3に出力します。
例えば、以下のようなコードになります:
from awsglue.context import GlueContext from pyspark.context import SparkContext glueContext = GlueContext(SparkContext.getOrCreate()) # DynamicFrameをDataFrameに変換 df = dynamic_frame.toDF() # パーティション列を含むすべての列を選択し、パーティション化して書き出し df.select("*").write.partitionBy("partition_column").parquet("s3://your-bucket/output-path/")
このアプローチを使用することで、パーティション列を出力データに残しつつ、S3のパスを分けることができます。ただし、この方法ではSparkのDataFrameを直接使用するため、AWS Glueの一部の最適化が失われる可能性があることに注意してください。
カスタムコードを使用することで、より細かい制御が可能になり、特定のニーズに合わせてデータ変換プロセスをカスタマイズできます。
Sources
CustomCode - AWS Glue
The DynamicFrame object - AWS Glue
Transform data with custom visual transforms - AWS Glue
回答済み 1年前
関連するコンテンツ
- 質問済み 5ヶ月前
- 質問済み 2年前

このやり方ではpartitionの項目は保持されませんでした。