想知道如何用pyspark中的字符串“包装”saveAsTextFile
的结果。
我正在尝试将RDD中的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()))
对于具有285行的RDD - 作为示例 - 这会产生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
,以及是否会是一个选择。
谢谢!