AWS Glue не будет переименовывать поля:

Схожу с ума по этому поводу, однако я уверен, что это что-то явно очевидное, что я упускаю из виду.

## @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

Есть идеи?

2 ответа

Решение

Можете ли вы проверить часть строки "toDF()"? Я вижу в документе упоминание о том, что RenameField работает на DynamicFrame? Думаешь, тебе следует применить RenameField к DynamicFrame "df"?

Кроме того, я думаю, что "`"здесь НЕ требуется, поскольку в документе упоминается, что тильда требуется только в том случае, если в именованных полях есть какая-либо точка ( см. Эту ссылку, пожалуйста). Я не использовал 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()

Ссылка: Шаг 4 Фильтруйте данные, они переименовывают некоторые поля.

Вы пробовали без `в AccountId. например

df2 = RenameField(df2, "AccountId","AcctNumber")

`необходимо, только если у вас есть точка в имени столбца

Другие вопросы по тегам