ÎncepețiÎncepe gratuit

Lucrul cu fișiere parquet

Fișierele CSV sunt excelente pentru a salva conținutul obiectelor de date rectangulare (precum data.frame-urile din R și DataFrames-urile Spark) pe disc. Dezavantajul lor este că sunt foarte lente la citire și scriere, ceea ce le face inutilizabile pentru seturi de date mari. Fișierele Parquet oferă o alternativă mai performantă. Pe lângă utilizarea cu datele Spark, fișierele parquet pot fi folosite și cu alte instrumente din ecosistemul Hadoop, precum Shark, Impala, Hive și Pig.

Tehnic vorbind, expresia fișier parquet este imprecisă. Atunci când stochezi date în format parquet, obții de fapt un director întreg de fișiere. Datele sunt distribuite între mai multe fișiere .parquet, ceea ce permite stocarea lor ușoară pe mai multe mașini, alături de câteva fișiere de metadate care descriu conținutul fiecărei coloane.

sparklyr poate importa fișiere parquet folosind spark_read_parquet(). Această funcție primește o conexiune Spark, un șir de caractere care denumește DataFrame-ul Spark ce urmează să fie creat și o cale către directorul parquet. Reține că această funcție importă datele direct în Spark, ceea ce este de obicei mai rapid decât importarea datelor în R și apoi utilizarea copy_to() pentru a le copia din R în Spark.

spark_read_parquet(sc, "a_dataset", "path/to/parquet/dir")

Acest exercițiu face parte din cursul

Introducere în Spark cu sparklyr în R

Vezi cursul

Instrucțiuni pentru exercițiu

O conexiune Spark a fost creată pentru tine ca spark_conn. Un șir de caractere care indică directorul parquet (din sistemul de fișiere unde rulează R) a fost creat pentru tine ca parquet_dir.

  • Folosește dir() pentru a lista căile absolute ale fișierelor din directorul parquet și atribuie rezultatul variabilei filenames.
    • Primul argument ar trebui să fie directorul ale cărui fișiere le listezi, parquet_dir.
    • Pentru a obține căile absolute (nu relative), transmite și full.names = TRUE.
  • Creează un data_frame cu două coloane.
    • filename ar trebui să conțină numele fișierelor tocmai obținute, fără partea de director. Creează această coloană transmițând numele fișierelor funcției basename().
    • size_bytes ar trebui să conțină dimensiunile acelor fișiere. Creează această coloană transmițând numele fișierelor funcției file.size().
  • Folosește spark_read_parquet() pentru a importa datele timbre în Spark și atribuie rezultatul variabilei timbre_tbl.
    • Primul argument ar trebui să fie conexiunea Spark.
    • Al doilea argument ar trebui să fie "timbre".
    • Al treilea argument ar trebui să fie parquet_dir.

Exercițiu interactiv practic

Încearcă acest exercițiu completând acest cod de exemplu.

# parquet_dir has been pre-defined
parquet_dir

# List the files in the parquet dir
filenames <- ___

# Show the filenames and their sizes
data_frame(
  filename = ___,
  size_bytes = ___
)

# Import the data into Spark
timbre_tbl <- ___
Editează și rulează codul