AWS Glue Visual ETLを使用してParquet形式でS3にデータを差分出力する方法

0

AWS Glue Visual ETLを使用して、OracleSQLから、parquet形式でS3にテーブルデータを差分出力したいです。

VisualETLで、データソースをOracleSQL、データターゲットをS3に設定し、parquet形式で出力を行いました。 再度ETLを実行すると、同じテーブルデータに対し、ファイル名の異なるparquetファイルが出力されてしまいます。 (parquetファイル名:「run-○○.parquet」) 本来は、初回は全データのETLを実行し、2回目以降は差分データのみ出力を行いたいです。

差分データの検出のためには、データソース(OracleSQL)のタイムスタンプや更新日時のカラムを使用して、 前回のETL実行以降に更新されたデータを抽出する方法が適切かと思われますが、 具体的にどのように設定したら良いかご教授ください。

質問済み 3ヶ月前89ビュー
1回答
0

AWS Glue Visual ETLを使用してOracleSQLからS3にParquet形式で差分データを出力する方法について、以下のアプローチを提案します:

  1. データソース(OracleSQL)の設定:

    • タイムスタンプや更新日時のカラムを含むクエリを作成します。
    • 例: "SELECT * FROM your_table WHERE last_updated_timestamp > :last_etl_run"
  2. ジョブパラメータの利用:

    • AWS Glue ジョブにパラメータを追加し、前回のETL実行時刻を保存します。
    • 初回実行時は過去の日付(例:1970-01-01)を使用し、全データを取得します。
  3. 差分抽出ロジックの実装:

    • Filter変換またはSQL変換を使用して、前回のETL実行以降に更新されたデータのみを抽出します。
  4. データターゲット(S3)の設定:

    • 出力パスにタイムスタンプやジョブ実行IDを含めることで、各実行ごとに一意のファイル名を生成します。
    • 例: "s3://your-bucket/output/year={}/month={}/day={}/hour={}/data.parquet"
  5. ブックマーク機能の活用:

    • AWS Glueのブックマーク機能を有効にし、最後に処理されたデータの位置を追跡します。
  6. ジョブの完了後の処理:

    • Lambda関数やStep Functionsを使用して、次回のジョブ実行のためにパラメータを更新します。

これらの設定により、初回は全データを取得し、以降の実行では差分データのみを処理することができます。また、Parquet形式での出力と、一意のファイル名生成も実現できます。

実装の詳細はAWS Glueのドキュメントを参照し、必要に応じてAWS supportに相談することをお勧めします。
Sources
Using the Parquet format in AWS Glue - AWS Glue
S3ParquetSource - AWS Glue

profile picture
回答済み 3ヶ月前

ログインしていません。 ログイン 回答を投稿する。

優れた回答とは、質問に明確に答え、建設的なフィードバックを提供し、質問者の専門分野におけるスキルの向上を促すものです。

質問に答えるためのガイドライン