Создать JSON пакетный вывод из pyspark в HDFS - PullRequest
3 голосов
/ 01 апреля 2020

Я преобразовываю некоторые табличные данные улья в JSON документы с использованием pyspark и записываю выходные данные в HDFS для последующего использования. фрагмент кода выглядит следующим образом:

def convertToJson(x):
    data = ....... #transformation_code
    output = row(str(json.dumps(data))
    return output
df1 = spark.sql("""select * from json_ready_tbl""")
rdd1 = df.rdd.map(lambda x: convertToJson(x)).saveAsTextFile('/hdfs/output/dir')

Выход JSON функции convertTo JSON вложен, но на высоком уровне выглядит примерно так:

{
  "id": 1001,
  "info": {
     "count": 12345,
     "code": 999
      }
}

Итак, в основном, выходные файлы имеют строку JSON в каждой строке. Затем мы создаем таблицу кустов поверх этих текстовых файлов, добавляя некоторые метаданные в каждую строку, такие как дата и имя-клиента, для дальнейшего последующего потребления следующим образом:

date         client_name  json_obj
2020-04-01   zeus         { "id": 1001, "info": { "count": 12345, "code": 999 } }
...
N number of rows

Теперь проблема в том, что мы должны пакетировать эти JSON файлов до 1000 в массив JSON и записи в HDFS, поэтому вывод в таблице кустов должен выглядеть следующим образом:

date         client_name  json_batch
2020-04-01   zeus         [{obj1}, {obj2}, {obj3},...{obj1000}]
...
T number of rows

Как я могу добиться этого? Любая помощь приветствуется. Спасибо.

...