Apache Spark Zapis DataFrame jeden plik HDFS? – 1 min czytania

You are currently viewing Apache Spark Zapis DataFrame jeden plik HDFS? – 1 min czytania
Share This Post, Help Others, And Earn My Heartfelt Appreciation! :)
5
(260)

Problem

W tym poście spojrzymy na zagadnienie: Apache Spark Zapis DataFrame jeden plik HDFS. Jeśli chce zapisać DataFrame jako plik na HDFS to może się pojawić problem, że zostanie on zapisany w postaci wielu plików. Jest to jak najbardziej poprawne zachowanie i wynika to ze zrównoleglania pracy w Apache Spark. Jednak jeśli chcemy wymusić zapis do jednego pliku należy zmienić partycjonowanie DF do jednej partycji. W tym celu należy przed zapisem wywołać metodę „coalesce” i podać ilość partycji.

Rozwiązanie

Poniższy przykład przedstawia w jaki sposób zapisać dowolny DF to pliku CSV. Dodatkowo przedstawiłem kilka dostępnych opcji tj.:

  • Mode – dostępne opcje:
    • overwrite – zawsze nadpisuje plik
    • append – dodaj do istniejącego pliku jeśli istnieje
    • igonre – zignoruj jeśli istnieje
    • error, errorIfExists, default – niech powstanie błąd jeśli plik istnieje. (opcja domyślna).
  • header – czy na początku pliku ma być nagłówek
  • delimiter – separator kolumn w pliku
  • quoteMode – jeśli ustawimy na „true” to każda kolumna będzie zapisana pomiędzy cudzysłowie. 
quoteMode = true„Spark”,”is”,”Cool”
quoteMode = falseSpark,is,Cool
myDF.coalesce(1).write.format("com.databricks.spark.csv")
  .mode("overwrite")
  .option("header", "true")
  .option("delimiter", ",")
  .option("quoteMode", "true")
  .save("<output_hdfs_path>")

To by było na tyle w temacie: Apache Spark Zapis DataFrame jeden plik HDFS!

Jeśli spodobał Ci się ten post to zostaw proszę komentarz poniżej lub udostępnij ten post na swoim Facebook’u, Twitter’ze, LinkedIn lub innej stronie z mediami społecznościowymi.
Dzięki!

How useful was this post?

Click on a star to rate it!

Average rating 5 / 5. Vote count: 260

No votes so far! Be the first to rate this post.

Subscribe
Powiadom o
guest
0 Comments
Inline Feedbacks
View all comments