問題タブ [data-lake]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
apache-spark - AWS Glue が paruqet ファイルに追加
私は現在、AWS を利用したデータ レイクの設計を進めています。
私が今持っているもの:
- s3 にアップロードされた XML ファイル
- AWS Glue クローラービルドカタログ
- AWS ETL ジョブはデータを変換し、parquet 形式で保存します。
etl ジョブがデータを変換するたびに、新しい parquet ファイルが作成されます。データを保存する最も効率的な方法は、単一の寄木細工のファイルであると思います。そうですか?もしそうなら、これを達成する方法。
自動生成されたジョブ コード: https://gist.github.com/jkornata/b36c3fa18ae04820c7461adb52dcc1a1
pyspark - AWS Glue Spark ジョブが、二重引用符を含む大文字の列名をサポートしない
問題の説明/根本原因: 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 コードを調整して機能させようとしたことはありますか?