Как преобразовать приведенный ниже код для записи вывода json с помощью pyspark DataFrame, используя, df2.write.format('json')
- У меня есть список ввода (для примера только несколько элементов).
- Хотите написать json, который является более сложным / вложенным, чем ввод.
- Я попытался использовать
rdd.map
- Проблема: вывод содержит апострофы для каждого объекта в json.
- Я не могу просто заменить строку, потому что сами данные могут ее содержать.
- Если есть лучший способ преобразовать схему во вложенный json с
DataFrame
, то в приведенном ниже примере вы можете показать, как?так как это может полностью разрешить апостроф.
Вот что я попробовал:
import json
rdd = sc.parallelize([(1,2,3),(4,5,6),(7,8,9)])
df = rdd.toDF(["a","b","c"])
rddToJson = df.rdd.map(lambda x: json.dumps({"some_top_level_1": {"mycolumn1": x.a}})) // note that result json is complex and more nested than input
rddToJson.collect()
результат: содержит апострофы (не может заменить, он может появляться где угодно в значениях), как это сделатьэто с правильной схемой и датафреймом, а затем df.json.write?
result:
Out[20]:
['{"some_top_level_1": {"mycolumn1": 1}}',
'{"some_top_level_1": {"mycolumn1": 4}}',
'{"some_top_level_1": {"mycolumn1": 7}}']
Моя цель (если это не может быть сделано другим способом) - использовать df.write.format('json') для того, чтобы написать вложенный / сложный json из вышеприведенного ввода.
PS: я увидел этот интересный пост: https://medium.com/@mrpowers/adding-structtype-columns-to-spark-dataframes-b44125409803, но, поскольку я новичок, я не был уверенкак я могу преобразовать входные данные в ту вложенную схему, которая мне нужна на выходе.