web-dev-qa-db-fra.com

écraser une sortie spark en utilisant pyspark

J'essaie d'écraser un Spark dataframe en utilisant l'option suivante dans PySpark mais je ne réussis pas

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

la commande mode = overwrite échoue

21
Devesh

Essayer:

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

Spark 1.4 et supérieur a une fonction csv intégrée pour le dataframewriter

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

par exemple.

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

Quel est le sucre syntaxique pour

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

Je pense que ce qui prête à confusion, c'est de trouver où exactement les options sont disponibles pour chaque format dans les documents.

Ces méthodes liées à l'écriture appartiennent à la classe DataFrameWriter: https://spark.Apache.org/docs/latest/api/python/pyspark.sql.html#pyspark.sql.DataFrameWriter =

La méthode csv dispose de ces options, également disponibles lors de l'utilisation de format("csv"): https://spark.Apache.org/docs/latest/api/python/pyspark.sql .html # pyspark.sql.DataFrameWriter.csv

La manière dont vous devez fournir les paramètres dépend également du fait que la méthode utilise un seul argument (key, value) Tuple ou mot clé. C'est assez standard dans la façon dont python fonctionne généralement bien que, en utilisant (* args, ** kwargs), il diffère simplement de la syntaxe Scala.

Par exemple, la méthode option(key, value) prend une option comme un tuple comme option(header,"true") et la méthode .options(**options) prend un tas d'affectations de mots clés, par exemple .options(header="true",sep="\t")

11
Davos