问题陈述/根本原因:我们正在使用 AWS Glue 将数据从生产 PostGress DB 加载到 AWS DataLake。Glue 在内部使用 Spark 作业来移动数据。然而,我们的 ETL 过程失败了,因为 Spark 只支持小写的表列名,不幸的是,我们所有的源 PostGress 表列名都采用 CamelCase 格式并用双引号括起来。
例如:我们在 PostGress DB 中的 Source 表列名称是“CreatedDate”。Spark 作业查询正在查找 createddate,但由于找不到列名而失败。因此,火花作业查询需要准确查找“CreatedDate”才能从 PostGress DB 中移动数据。这似乎是 Spark(因为它只支持小写的表列名)和 PostGress(使用双引号创建的列名在其余生中必须双引号)的固有限制。
参考链接: https : //docs.aws.amazon.com/athena/latest/ug/tables-databases-columns-names.html PostgreSQL 列名是否区分大小写?
评估的解决方案: 1. 我们将无法将列名从 CamelCase 重命名为小写,因为这将需要对所有下游系统进行更大的更改。2. 我们正在尝试重写/调整 Glue 的自动生成的 Spark 代码,看看我们是否可以让它与双引号、非小写的源表列名一起工作。
以前有没有人遇到过这个问题,您是否尝试过调整自动生成的 Spark 代码以使其正常工作?