Как конвертировать JSON файлы, хранящиеся в S3 в CSV, используя клей? - PullRequest
0 голосов
/ 21 мая 2019

У меня есть некоторые json-файлы, хранящиеся в s3, и мне нужно преобразовать их в папке папки в формат csv.

В настоящее время я использую клей, чтобы сопоставить их с Афиной, но,как я уже сказал, теперь мне нужно сопоставить их с CSV.

Можно ли использовать для этого клеевую работу?

Я пытаюсь понять, можно ли склеить задание в мои каталоги папок s3, преобразовав все найденные json-файлы в csv (как новые файлы).

Если это невозможно, есть ли какие-либо aws?служба, которая может помочь мне сделать это?

EDIT1:

Вот текущий код, который я пытаюсь запустить

import sys
from pyspark.context import SparkContext
from awsglue.context import GlueContext

sc = SparkContext()
glueContext = GlueContext(sc)

inputGDF = glueContext.create_dynamic_frame_from_options(connection_type = "s3", connection_options = {"paths": ["s3://agco-sa-dfs-dv/dealer-data"]}, format = "json")
outputGDF = glueContext.write_dynamic_frame.from_options(frame = inputGDF, connection_type = "s3", connection_options = {"path": "s3://agco-sa-dfs-dv/dealer-data"}, format = "csv")

Работа выполняется без ошибок, но ничегоКажется, что происходит на папке S3.Я полагаю, что код будет получать файлы JSON из / дилер-данных и конвертировать в ту же папку, что и CSV.Я, вероятно, ошибаюсь.

EDIT2:

Хорошо, я почти заставил это работать так, как мне нужно.

Дело в том, что создание динамического фрейма работает только дляпапки с файлами, а не папки с подпапками с файлами.

import sys
import logging
from awsglue.transforms import *
from awsglue.utils import getResolvedOptions
from pyspark.context import SparkContext
from awsglue.context import GlueContext
from awsglue.job import Job

sc = SparkContext()
glueContext = GlueContext(sc)

inputGDF = glueContext.create_dynamic_frame_from_options(connection_type = "s3", connection_options = {"paths": ["s3://agco-sa-dfs-dv/dealer-data/installations/3555/2019/2"]}, format = "json")

outputGDF = glueContext.write_dynamic_frame.from_options(frame = inputGDF, connection_type = "s3", connection_options = {"path": "s3://agco-sa-dfs-dv/dealer-data/installations/3555/2019/2/bla.csv"}, format = "csv")

Вышеприведенное работает, но только для этого каталога (../2) Есть ли способ прочитать все файлы данной папки и подпапок?

1 Ответ

0 голосов
/ 23 мая 2019

Для S3 :

inputGDF = glueContext.create_dynamic_frame_from_options(
    connection_type = "s3", 
    connection_options = {
        "paths": ["s3://agco-sa-dfs-dv/dealer-data/installations/3555/2019/2"],
        "recurse" : True
    }, 
    format = "json
)
следует установить для параметра recurse значение True.
...