Очень странная проблема с клеем.Используя его для запуска ETL с данными, я перехожу из MySQL RDS в Redshift.Используя тот же код, который я использовал в другой таблице, где он работал нормально и копировал все данные, как и должно быть.
Однако во второй таблице по какой-то причине он не копирует данные в столбце id из MySQL.Столбец id на Redshift полностью пуст.
query_df = spark.read.format("jdbc").option("url",
args['RDSURL']).option("driver",
args['RDSDRIVER']).option("dbtable",
args['RDSQUERY']).option("user", args['RDSUSER']).option("password",
args['RDSPASS']).load()
datasource0 = DynamicFrame.fromDF(query_df, glueContext,
"datasource0")
logging.info(datasource0.show())
applymapping1 = ApplyMapping.apply(frame = datasource0, mappings =
[("id", "int", "id", "int"), ... , transformation_ctx =
"applymapping1")
logging.info(applymapping1.show())
Из приведенных выше журналов, которые я печатаю выше, я вижу, что динамический фрейм содержит поле id даже после ApplyMapping.
datasink2 = glueContext.write_dynamic_frame.from_jdbc_conf(frame =
applymapping1, catalog_connection = args['RSCLUSTER'],
connection_options = {"dbtable": args['RSTABLE'], "database":
args['RSDB']}, redshift_tmp_dir = args["TempDir"],
transformation_ctx = "datasink2")
Кажется, проблема здесь возникает?После этого задание завершается, при проверке Redshift столбец id полностью пуст.
Очень озадачен этим поведением.Точный код отлично работал на другой таблице, единственное различие между идентификатором в этих двух таблицах состоит в том, что эта таблица имеет идентификатор как int (11) без знака, а таблица, где работал код, имеет идентификатор как int (10) со знаком.