使用pyspark

时间:2016-03-08 07:06:20

标签: python apache-spark pyspark

我试图在PySpark中使用以下选项覆盖Spark数据帧,但我没有成功

spark_df.write.format('com.databricks.spark.csv').option("header", "true",mode='overwrite').save(self.output_file_path)

mode = overwrite命令不成功

2 个答案:

答案 0 :(得分:28)

尝试:

spark_df.write.format('com.databricks.spark.csv') \
  .mode('overwrite').option("header", "true").save(self.output_file_path)

答案 1 :(得分:11)

Spark 1.4及更高版本为dataframewriter提供了内置的csv函数

https://spark.apache.org/docs/latest/api/python/pyspark.sql.html#pyspark.sql.DataFrameWriter

e.g。

spark_df.write.csv(path=self.output_file_path, header="true", mode="overwrite", sep="\t")

的语法糖
spark_df.write.format("csv").mode("overwrite").options(header="true",sep="\t").save(path=self.output_file_path)

我认为令人困惑的是找到文档中每种格式的确切选项。

这些与写相关的方法属于DataFrameWriter类: https://spark.apache.org/docs/latest/api/python/pyspark.sql.html#pyspark.sql.DataFrameWriter

csv方法提供了这些选项,使用format("csv")时也可以使用: https://spark.apache.org/docs/latest/api/python/pyspark.sql.html#pyspark.sql.DataFrameWriter.csv

您需要提供参数的方式还取决于该方法是否采用单个(key, value)元组或关键字args。它通常是python工作方式的标准,使用(* args,** kwargs),它只是与Scala语法不同。

例如 option(key, value)方法将一个选项作为option(header,"true")之类的元组,.options(**options)方法采用一系列关键字分配,例如.options(header="true",sep="\t")