Сохранить файл объектов json как массив json вместо объектов json на s3 - PullRequest
0 голосов
/ 23 апреля 2019

Я пытаюсь сохранить DF в формате json на s3.он сохраняется как файл объектов json, однако мне нужен файл массива json.

I have csv file on s3, which i am loading into dataframe in aws glue. after performing some transformation i am writing DF to S3 format as json. But it is creating json objects file like: 

{obj1} {obj2}, однако я хочу сохранить его как файл массива json, например: [{obj1}, {obj2}]

datasource0 = glueContext.create_dynamic_frame.from_options (connection_type = "s3", connection_options = {"paths": [s3_path], "useS3ListImplementation": True, "recurse": True}, format = "csv",format_options = {"withHeader": True, "separator": "|"})

applymapping1 = ApplyMapping.apply(frame = datasource0, mappings = [("cdw_zip_id", "string", "cdw_zip_id", "string"), ("zip_code", "string", "zip_code", "string"), ("cdw_terr_id", "string", "cdw_terr_id", "string")], transformation_ctx = "applymapping1")

applymapping2 = applymapping1.toDF () applymapping2.coalesce (1) .write.format ("org.apache.spark.sql.json "). mode (" overwrite "). save (args ['DEST_PATH'])

Фактически: {obj1} {obj2} ожидается: [{obj1}, {obj2}]

1 Ответ

0 голосов
/ 23 апреля 2019

Когда вызывается действие df.write, Spark выполняет ленивую оценку, то есть все преобразования применяются к отдельным записям, которые он читает со всех разделов, в одной операции чтения одновременно по всем узлам (разделам, присутствующим в них)которые сконфигурированы для выполнения рабочей нагрузки.

Поскольку все задачи записывают выходные данные независимо, мы можем ожидать, что в место назначения будет записана только отдельная запись, а не весь файл json.

Есливы выполняете операцию объединения, вы сможете объединить только данные раздела, а не поведение операции искровой записи.

...