Хотите знать, как "обернуть" результаты saveAsTextFile
строками в pyspark.
Я пытаюсь записать строки XML из RDD в несколько файлов, в частности, столько разделов, сколько имеется вРДД.Я сделал это успешно с помощью чего-то вроде:
import math, uuid
# number of records per page
perpage = 100
# write to files
df.select('document').rdd.repartition(math.ceil(df.count()/perpage)).map(lambda row: row.document.replace('<?xml version="1.0" encoding="UTF-8"?>','')).saveAsTextFile('file:///foo/bar/output/%s' % str(uuid.uuid4()))
Для RDD с 285 строками - в качестве примера - это приводит к 3 part-0000#
файлам, что нормально.Каждый из них выглядит следующим образом:
<foo>
<bar>amazing strings</bar>
</foo>
<foo>
<bar>amazing strings2</bar>
</foo>
<foo>
<bar>amazing strings3</bar>
</foo>
...
...
Однако в целом это недопустимый XML, так как для этого файла потребуется корневой тег.Я хотел бы что-то вроде ...
<scrog>
<foo>
<bar>amazing strings</bar>
</foo>
<foo>
<bar>amazing strings2</bar>
</foo>
<foo>
<bar>amazing strings3</bar>
</foo>
...
...
</scrog>
Я понимаю, что мог бы добавить <scrog>
и добавить </scrog>
к текстовому файлу после факта, но я хотел бы лучше понять использование saveAsTextFile
, и будет ли это вариант.
Спасибо!