[Python] 如何將pyspark中的表數據框導出到csv?


Answers

如果你不能使用spark-csv,你可以這樣做:

df.rdd.map(lambda x: ",".join(map(str, x))).coalesce(1).saveAsTextFile("file.csv")

如果您需要處理帶換行符或逗號的字符串,則不起作用。 用這個:

import csv
import cStringIO

def row2csv(row):
    buffer = cStringIO.StringIO()
    writer = csv.writer(buffer)
    writer.writerow([str(s).encode("utf-8") for s in row])
    buffer.seek(0)
    return buffer.read().strip()

df.rdd.map(row2csv).coalesce(1).saveAsTextFile("file.csv")
Question

我正在使用spark-1.3.1(pyspark),並使用SQL查詢生成了一個表。 我現在有一個對像是一個DataFrame。 我想導出這個DataFrame對象(我稱之為“表”)到一個CSV文件,所以我可以操縱它,並繪製列。 如何將DataFrame“表”導出到csv文件?

謝謝!




這個怎麼樣(在你不想要一個班輪)?

for row in df.collect():
    d = row.asDict()
    s = "%d\t%s\t%s\n" % (d["int_column"], d["string_column"], d["string_column"])
    f.write(s)

f是一個打開的文件描述符。 此外,分隔符是一個TAB字符,但很容易改變到任何你想要的。