首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >AWS Glue不会重命名字段:

AWS Glue不会重命名字段:
EN

Stack Overflow用户
提问于 2018-07-19 22:39:53
回答 3查看 815关注 0票数 0

在这件事上我失去了理智,然而,我确信这是我明显忽略的事情。

代码语言:javascript
复制
## @params: [JOB_NAME]
args = getResolvedOptions(sys.argv, ['JOB_NAME'])

sc = SparkContext()
glueContext = GlueContext(sc)
spark = glueContext.spark_session
job = Job(glueContext)
job.init(args['JOB_NAME'], args)

## Go out and get the data we need ##
df = glueContext.create_dynamic_frame.from_catalog(database = "emails", table_name = "contactinfo", redshift_tmp_dir = args["TempDir"], transformation_ctx = "<transformation_ctx>")


df2 = df.toDF().show()
df2 = RenameField(df2, "`AccountId`","AcctNumber") # This is the line causing the error
df2 = RenameField(df2, "`id`", "CampMemId")
df2.show()  

AWS Glue抛出的错误如下:

代码语言:javascript
复制
 TypeError: object() takes no parameters

有什么想法吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-07-20 11:56:48

你能检查一下"toDF()“行吗?我看到文档提到RenameField在DynamicFrame上工作?您认为应该在DynamicFrame "df“上应用RenameField吗?

此外,我认为这里不需要"`“,因为文档提到,如果引用的字段名称中包含任何点,则仅需要代字号,(see this link please)。我还没有用过RenameField,也许你可以在你那端检查一下。

票数 1
EN

Stack Overflow用户

发布于 2018-08-23 03:35:44

在您转换之前

代码语言:javascript
复制
df2 = df.toDF()

renamedFrame = df.rename_field("original name", "new name")

或者在你的情况下

代码语言:javascript
复制
df.printSchema()

*尝试在原始名称中去掉反勾号(`)

代码语言:javascript
复制
renamedFrame = df.rename_field("AccountId","AcctNumber")
df2 = renamedFrame.toDF()
df2.printSchema()

参考:Step 4 Filter the data they rename some fields.

票数 0
EN

Stack Overflow用户

发布于 2018-12-26 12:14:06

你有没有尝试过在AccountId中没有`。例如:

代码语言:javascript
复制
df2 = RenameField(df2, "AccountId","AcctNumber")

仅当列名中有点时才需要`

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51425502

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档