2017-04-16 114 views
0

我正在處理一個包含兩列uni_key和createdDate的數據框。我運行SQL查詢並將結果保存爲'a',現在我想將這些結果保存到csv文件中。有沒有辦法做到這一點?這裏有一個代碼片段:如何將數據框保存到spark 1.6中的csv文件?

import sys 
from pyspark import SparkContext 
from pyspark.sql import SQLContext, Row 
import csv 



if len(sys.argv) != 2: 

    print("Usage: cleaning_date.py <file>") 
    exit(-1) 
sc = SparkContext() 
sqlContext = SQLContext(sc) 
csvfile = sc.textFile("new_311.csv") 
key_val = csvfile.mapPartitions(lambda x: csv.reader(x)).map(lambda x: (x[0], x[1])) 
result = key_val.filter(lambda x: getDataType(x[1]) == "valid") 
myDataFrame = sqlContext.createDataFrame(result, ('uni_key', 'createdDate')) 
print(type(myDataFrame)) 
myDataFrame.registerTempTable("abc") 
a = sqlContext.sql("SELECT uni_key FROM abc") 
a.show() 
# a.write.format("com.databricks.spark.csv").save("l.csv") 
a.write.option("header", "true").csv("aaa.csv") 
sc.stop() 

這個代碼提供了以下錯誤現在:

AttributeError的:「DataFrameWriter」對象有沒有屬性「CSV」

+0

確實註釋掉了'a.write.format(「com.databricks.spark.csv」)。save(「l.csv」)',不工作? – Pushkr

回答

2

內建CSV筆者在星火2.0中引入而你明確使用Spark 1.x.

要麼使用spark-csv

df.write.format("com.databricks.spark.csv").save(path) 

或更新星火到最新版本。

+0

謝謝@ user7875578,我更新爲spark 2,它工作。 :) – Tannavee

+0

PySpark'1.6.1'應該怎麼做?當我運行'df.write.format(「com.databricks.spark.csv」)。save(path)'我看到'java.lang.ClassNotFoundException:無法找到數據源:com.databricks.spark.csv 。' – Candic3

+0

@ Candic3使用此命令啓動pyspark pyspark --packages com.databricks:spark-csv_2.10:1.4.0 – user2017

相關問題