Мое задание Glue читает таблицу (CSV-файл S3), а затем разбивает ее на части и записывает 10 Json файлов на S3.
Я заметил, что для некоторых строк в приведенных файлах некоторые столбцы пропали!
Это строка:
etalab_named_postgre_csv = glueContext.create_dynamic_frame.from_catalog(database = "db", table_name = "tab", transformation_ctx = "datasource0")
applymapping_etalab_named_postgre_csv= ApplyMapping.apply(frame = etalab_named_postgre_csv, mappings = [("compldistrib", "string", "compldistrib", "string"), ("numvoie", "long", "numvoie", "long"),....], transformation_ctx = "applymapping1")
path_s3 = "s3://Bucket"
etalab_named_postgre_csv = applymapping_etalab_named_postgre_csv.toDF()
etalab_named_postgre_csv.repartition(10).write.format("json").option("sep",",").option("header", "true").option("mode","Overwrite").save(path_s3)
В выходных файлах некоторые столбцы просто исчезают!
Я использовал Spark на EMR, чтобы загрузить ту же таблицу ввода, чтобы проверить существование исчезнувших столбцов.
Это обычное поведение клея? Как я могу предотвратить это, пожалуйста?
РЕДАКТИРОВАТЬ:
Теперь я уверен в проблеме.
Кажется, что источником проблемы является отображение клея. Когда я делаю
applymapping_etalab_named_postgre_csv= ApplyMapping.apply(frame = etalab_named_postgre_csv, mappings = [("compldistrib", "string", "compldistrib", "string"), ("numvoie", "long", "numvoie", "long"),....], transformation_ctx = "applymapping1")
, я объявляю, что compldistrib является строкой, и я хочу, чтобы она выводилась как строка. Если строка содержит значение числового значения c в compldistrib, отображение просто игнорирует его!
Это ошибка?