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
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 variabileifilenames.- 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.
- Primul argument ar trebui să fie directorul ale cărui fișiere le listezi,
- Creează un
data_framecu două coloane.filenamear trebui să conțină numele fișierelor tocmai obținute, fără partea de director. Creează această coloană transmițând numele fișierelor funcțieibasename().size_bytesar trebui să conțină dimensiunile acelor fișiere. Creează această coloană transmițând numele fișierelor funcțieifile.size().
- Folosește
spark_read_parquet()pentru a importa datele timbre în Spark și atribuie rezultatul variabileitimbre_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 <- ___