gpt4 book ai didi

pyspark - AWS Glue Spark 作业无法支持带双引号的大写列名称

转载 作者:行者123 更新时间:2023-12-05 06:23:47 25 4
gpt4 key购买 nike

问题陈述/根本原因:我们正在使用 AWS Glue 将数据从生产 PostGress 数据库加载到 AWS DataLake。 Glue 在内部使用 Spark 作业来移动数据。然而,我们的 ETL 过程失败了,因为 Spark 只支持小写的表列名称,不幸的是,我们所有的源 PostGress 表列名称都采用 CamelCase 形式并用双引号引起来。

例如:我们在 PostGress 数据库中的源表列名称是“CreatedDate”。 Spark 作业查询正在查找 createddate,但由于找不到列名而失败。因此,spark 作业查询需要准确查找“CreatedDate”才能从 PostGress 数据库中移动数据。这似乎是 Spark(因为它只支持小写表列名)和 PostGress(用双引号创建的列名必须在其余下的生命中被双引号)的固有限制。

引用链接: https://docs.aws.amazon.com/athena/latest/ug/tables-databases-columns-names.html Are PostgreSQL column names case-sensitive?

评估的解决方案:1. 我们无法将列名从 CamelCase 重命名为小写,因为这将需要在所有下游系统中进行更大的更改。2. 我们正在尝试重写/调整 Glue 的自动生成的 Spark 代码,看看我们是否可以让它使用双引号、非小写的源表列名称。

以前有没有人遇到过这个问题,您是否尝试调整自动生成的 Spark 代码以使其正常工作?

最佳答案

Sandeep Fatangare 感谢您的建议。

我是 AWS Glue 的新手,我不知道自己的操作是否正确。如果我错了,请指导我。

我尝试通过导航到编辑脚本

AWS Glue -> 作业并选择失败的作业脚本

在详细信息选项卡中,它显示位置“作业详细信息中提到的位置是 s3://aws-glue-assets-us-east-1/scripts/glueetl/jdbc_incremental.py”。

然后在脚本选项卡中我开始编辑脚本

上一个:

applymapping1 = ApplyMapping.apply(frame=datasource0, mappings=self.get_mappings(),                                                                                      transformation_ctx="applymapping1_" + self.source.table_name)

编辑:

applymapping1 = ApplyMapping.apply(frame=datasource0, mappings=self.get_mappings(),
caseSensitive : Boolean = false,
transformation_ctx="applymapping1_" + self.source.table_name)

我遇到了两个问题

  1. 我无法保存编辑好的脚本
  2. 在运行脚本时它告诉我缺少工作流名称

关于pyspark - AWS Glue Spark 作业无法支持带双引号的大写列名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58093109/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com