Клеевая работа - удаление столбцов при создании нескольких разделов - PullRequest
0 голосов
/ 10 марта 2020

Мое задание 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, отображение просто игнорирует его!

Это ошибка?

1 Ответ

0 голосов
/ 11 марта 2020

Так что после нескольких часов поиска я не нашел решения. Альтернатива, которую я нашел, - это замена работы Glue на работу Spark с использованием EMR. Это также намного быстрее.

Надеюсь, это кому-нибудь поможет.

...