使用pyspark覆盖火花输出

Dev*_*esh 21 python apache-spark pyspark

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

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

mode = overwrite命令不成功

小智 31

尝试:

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


Dav*_*vos 12

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

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

例如

spark_df.write.csv(path=self.output_file_path, header="true", mode="overwrite", sep="\t")
Run Code Online (Sandbox Code Playgroud)

这是语法糖

spark_df.write.format("csv").mode("overwrite").options(header="true",sep="\t").save(path=self.output_file_path)
Run Code Online (Sandbox Code Playgroud)

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

这些与写相关的方法属于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")