我正在使用PySpark2.1,我需要想出一种方法来将我的Dataframe写入一个特殊格式的.txt文件;所以不是典型的json或csv,而是ctf格式(对于cntk)。
文件不能有额外的括号或逗号等。格式如下:
|label val |features val val val ... val
|label val |features val val val ... val
一些代码可能如下所示:
l = [('Ankit',25),('Jalfaizy',22),('saurabh',20),('Bala',26)]
rdd = sc.parallelize(l)
people = rdd.map(lambda x: Row(name=x[0], age=int(x[1]))).toDF()
people.show(n=4)
def Convert_to_String(r):
return '|label ' + r.name + ' ' + '|features ' + str(r.age) + '\n'
m_p = people.rdd.map(lambda r: Row(Convert_to_String(r)) ).toDF()
m_p.show(n=3)
在上面的示例中,我只想将每行中的每个字符串附加到一个文件中,而不需要任何额外的字符。
实际Dataframe比较大;它很可能可以被分割成多个文件;但如果结果是一个文件,那就更好了。
任何见解都很有帮助。
谢谢!
1条答案
按热度按时间mec1mxoz1#
将我的评论转换为答案。
而不是将每条记录转换为
Row
打电话来toDF()
,只需将每条记录Map到一个字符串。那就打电话saveAsTextFile()
.您的数据可能存储在多个文件中,但您可以从命令行将它们连接在一起。命令如下所示: