AWS Glue 不会重命名字段:
AWS Glue won't rename fields:
对此我失去了理智,但我确信这是我忽略的显而易见的事情。
## @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 抛出的错误如下:
TypeError: object() takes no parameters
有什么想法吗?
你能检查行 "toDF()" 部分吗?我看到文档提到 RenameField 在 DynamicFrame 上工作?认为您应该在 DynamicFrame 上应用 RenameField "df" ?
此外,我认为此处不需要“`”,因为文档提到,只有在引用的字段名称中包含任何点时才需要波浪号,(see this link please)。我有没有用过 RenameField,也许你可以在最后检查一下。
转换之前
df2 = df.toDF()
renamedFrame = df.rename_field("original name", "new name")
或者你的情况
df.printSchema()
*尝试去掉原始名称中的反引号 (`)
renamedFrame = df.rename_field("AccountId","AcctNumber")
df2 = renamedFrame.toDF()
df2.printSchema()
您是否尝试过在 AccountId 中不使用 `。
例如
df2 = RenameField(df2, "AccountId","AcctNumber")
` 仅当列名中有点时才需要
对此我失去了理智,但我确信这是我忽略的显而易见的事情。
## @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 抛出的错误如下:
TypeError: object() takes no parameters
有什么想法吗?
你能检查行 "toDF()" 部分吗?我看到文档提到 RenameField 在 DynamicFrame 上工作?认为您应该在 DynamicFrame 上应用 RenameField "df" ?
此外,我认为此处不需要“`”,因为文档提到,只有在引用的字段名称中包含任何点时才需要波浪号,(see this link please)。我有没有用过 RenameField,也许你可以在最后检查一下。
转换之前
df2 = df.toDF()
renamedFrame = df.rename_field("original name", "new name")
或者你的情况
df.printSchema()
*尝试去掉原始名称中的反引号 (`)
renamedFrame = df.rename_field("AccountId","AcctNumber")
df2 = renamedFrame.toDF()
df2.printSchema()
您是否尝试过在 AccountId 中不使用 `。 例如
df2 = RenameField(df2, "AccountId","AcctNumber")
` 仅当列名中有点时才需要