gpt4 book ai didi

python - 如何在pyspark中将spark数据框保存为没有行的文本文件?

转载 作者:太空宇宙 更新时间:2023-11-03 17:11:02 25 4
gpt4 key购买 nike

我有一个数据框“df”,其中包含列 ['name', 'age']我使用 df.rdd.saveAsTextFile("..") 保存数据帧,将其另存为 rdd。我加载了保存的文件,然后collect()给出了以下结果。

a = sc.textFile("\mee\sample")
a.collect()
Output:
[u"Row(name=u'Alice', age=1)",
u"Row(name=u'Alice', age=2)",
u"Row(name=u'Joe', age=3)"]

这不是行的 rdd。

a.map(lambda g:g.age).collect()
AttributeError: 'unicode' object has no attribute 'age'

有没有办法将数据帧保存为普通的rdd,而无需列名和行关键字?我想保存数据帧,以便在加载文件和收集时应该给我如下:

a.collect()   
[(Alice,1),(Alice,2),(Joe,3)]

最佳答案

这是一个普通的RDD[Row]。问题是,当您 saveAsTextFile 并使用 textFile 加载时,您得到的是一堆字符串。如果你想保存对象,你应该使用某种形式的序列化。例如pickleFile:

from pyspark.sql import Row

df = sqlContext.createDataFrame(
[('Alice', 1), ('Alice', 2), ('Joe', 3)],
("name", "age")
)

df.rdd.map(tuple).saveAsPickleFile("foo")
sc.pickleFile("foo").collect()

## [('Joe', 3), ('Alice', 1), ('Alice', 2)]

关于python - 如何在pyspark中将spark数据框保存为没有行的文本文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34083871/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com