2016-03-15 31 views
8

我使用Spark SQL來閱讀鑲木地板和書寫鑲木地板文件。Spark SQL - 如何將DataFrame寫入文本文件?

但有些情況下,我需要將DataFrame寫成文本文件而不是Json或Parquet。

是否有任何默認方法支持或我必須將該數據幀轉換爲RDD然後使用saveAsTextFile()方法?

回答

11

使用Databricks Spark-CSV可以事後直接保存到一個CSV文件和負載從一個CSV文件這樣

import org.apache.spark.sql.SQLContext 

SQLContext sqlContext = new SQLContext(sc); 
DataFrame df = sqlContext.read() 
    .format("com.databricks.spark.csv") 
    .option("inferSchema", "true") 
    .option("header", "true") 
    .load("cars.csv"); 

df.select("year", "model").write() 
    .format("com.databricks.spark.csv") 
    .option("header", "true") 
    .option("codec", "org.apache.hadoop.io.compress.GzipCodec") 
    .save("newcars.csv"); 
+1

它應該是'df.select(「年」,「模式」)。write.format'而不是'df.select(「year」,「model」).write().format'?否則你得到一個'TypeError:'DataFrameWriter'對象不可調用'錯誤 – ajkl

+2

這是爲Spark 1.3提供的官方示例。如果你使用Spark 1.4+,你應該按照你的建議使用'df.select(「year」,「model」)。write.format'。 –

相關問題