gpt4 book ai didi

amazon-web-services - AWS Glue ApplyMapping 从 double 到字符串

转载 作者:行者123 更新时间:2023-12-02 00:33:16 25 4
gpt4 key购买 nike

我在 Glue Job 上遇到了一些令人沮丧的问题。

我有一个从爬虫创建的表格。它通过了一些 CSV 数据并创建了一个模式。模式的某些元素需要修改,例如数字到字符串并应用标题。

我似乎在这里遇到了一些问题 - 某些字段的架构似乎已被拾取为 double 。当我尝试将其转换为我需要的字符串时,它包含一些空精度,例如1234 --> 1234.0.

我的映射代码是这样的:

applymapping1 = ApplyMapping.apply(
frame = datasource0,
mappings = [
("col1","double","first_column_name","string"),
("col2","double","second_column_name","string")
],
transformation_ctx = "applymapping1"
)

我爬取数据后得到的结果表是这样的:

first_column_name    second_column_name
1234.0 4321.0
5678.0 8765.0

相对于

first_column_name    second_column_name
1234 4321
5678 8765

有解决这个问题的好方法吗?我尝试将最初由爬虫创建的表中的架构更改为 bigint 而不是 double ,但是当我将映射代码更新为 ("col1","bigint","first_column_name","string") 表最终为空。

最佳答案

只需对 botchniaque 答案进行一点更正,您实际上必须同时执行 ResolveChoice 和 ApplyMapping 以确保正确的类型转换。

ResolveChoice 将确保您的列中只有一种类型。如果您不执行此步骤并且歧义未解决,该列将变成一个结构,Redshift 最终会将其显示为 null。

因此应用 ResolveChoice 以确保您所有的数据都是一种类型(int,for ie)

df2 = ResolveChoice.apply(datasource0, specs = [("col1", "cast:int"), ("col2", "cast:int")])

最后,使用 ApplyMapping 改变你想要的类型

df3 = ApplyMapping.apply(
frame = df2,
mappings = [
("col1","int","first_column_name","string"),
("col2","int","second_column_name","string")
],
transformation_ctx = "applymapping1")

希望这有帮助(:

关于amazon-web-services - AWS Glue ApplyMapping 从 double 到字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50945573/

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