Spark SQL - 如何将 DataFrame 写入文本文件?
Posted
技术标签:
【中文标题】Spark SQL - 如何将 DataFrame 写入文本文件?【英文标题】:Spark SQL - How to write DataFrame to text file? 【发布时间】:2016-03-15 12:10:55 【问题描述】:我正在使用Spark SQL
来读取 parquet 和写入 parquet 文件。
但在某些情况下,我需要将DataFrame
写为文本文件,而不是 Json 或 Parquet。
是否支持任何默认方法,或者我必须将该 DataFrame 转换为 RDD
然后使用 saveAsTextFile()
方法?
【问题讨论】:
【参考方案1】:使用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");
【讨论】:
应该是df.select("year", "model").write.format
而不是 df.select("year", "model").write().format
?否则你会得到一个TypeError: 'DataFrameWriter' object is not callable
错误
这是官方为 Spark 1.3 提供的示例。如果你使用 Spark 1.4+,你应该按照你的建议使用df.select("year", "model").write.format
。【参考方案2】:
df.repartition(1).write.option("header", "true").csv("filename.csv")
【讨论】:
以上是关于Spark SQL - 如何将 DataFrame 写入文本文件?的主要内容,如果未能解决你的问题,请参考以下文章
如何将 BigQuery SQL 查询结果转换为 Spark DataFrame?
如何在 Spark SQL 中向现有 Dataframe 添加新列
Spark:如何将 DataFrame 更改为 LibSVM 并执行逻辑回归