Я преобразовываю некоторые табличные данные улья в 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
Как я могу добиться этого? Любая помощь приветствуется. Спасибо.