AWS Glue не копирует столбец id (int) в Redshift - он пустой - PullRequest
0 голосов
/ 31 января 2019

Очень странная проблема с клеем.Используя его для запуска 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) со знаком.

...