обернуть вывод rdd.saveAsTextFile значениями в pyspark - PullRequest
0 голосов
/ 24 мая 2018

Хотите знать, как "обернуть" результаты 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, и будет ли это вариант.

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...