簡體   English   中英

如何在pyspark中將spark數據幀保存為沒有行的文本文件?

[英]How to save a spark dataframe as a text file without Rows in pyspark?

我有一個包含 ['name', 'age'] 列的數據df.rdd.saveAsTextFile("..") “df”,我使用df.rdd.saveAsTextFile("..")保存了數據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)]

我認為你可以這樣做:

a.map(lambda x:(x[0],x[1])).collect()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM