我试图在PySpark中使用以下选项覆盖Spark数据帧,但我没有成功
spark_df.write.format('com.databricks.spark.csv').option("header", "true",mode='overwrite').save(self.output_file_path)
mode = overwrite命令不成功
答案 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")