問題の説明/根本原因: AWS Glue を使用して、本番 PostGress DB から AWS DataLake にデータをロードしています。Glue は内部的に Spark ジョブを使用してデータを移動します。ただし、Spark は小文字のテーブル列名しかサポートしていないため、ETL プロセスは失敗しています。残念ながら、ソースの PostGress テーブル列名はすべてキャメルケースで二重引用符で囲まれています。
例: PostGress DB のソース テーブルの列名は「CreatedDate」です。Spark ジョブ クエリは createddate を探していますが、列名が見つからないため失敗しています。そのため、Spark ジョブ クエリは、PostGress DB からデータを移動できるように、正確に「CreatedDate」を探す必要があります。これは、Spark (小文字のテーブル列名のみをサポートするため) と PostGress (二重引用符で作成された列名は、残りの期間は二重引用符で囲む必要があるため) の両方に固有の制限のようです。
参照リンク: https://docs.aws.amazon.com/athena/latest/ug/tables-databases-columns-names.html PostgreSQL の列名は大文字と小文字を区別しますか?
評価されたソリューション: 1. すべての下流システムでより大きな変更が必要になるため、列名をキャメルケースから小文字に変更することはできません。2. Glue の自動生成された Spark コードを書き直し/微調整して、二重引用符で囲まれた小文字以外のソース テーブルの列名で動作するかどうかを確認しようとしています。
以前にこの問題に遭遇した人はいますか? また、自動生成された Spark コードを調整して機能させようとしたことはありますか?