Bekerja dengan file parquet
File CSV sangat baik untuk menyimpan konten objek data berbentuk persegi panjang (seperti data.frame di R dan DataFrame di Spark) ke disk. Masalahnya, CSV sangat lambat untuk dibaca dan ditulis, sehingga kurang dapat digunakan untuk himpunan data berukuran besar. File Parquet menyediakan alternatif dengan kinerja lebih tinggi. Selain digunakan untuk data Spark, file parquet juga dapat dipakai dengan alat lain dalam ekosistem Hadoop, seperti Shark, Impala, Hive, dan Pig.
Secara teknis, istilah parquet file kurang tepat. Ketika Anda menyimpan data dalam format parquet, yang Anda dapatkan sebenarnya adalah satu direktori yang berisi banyak file. Data dipecah ke beberapa file .parquet, sehingga mudah disimpan di banyak mesin, dan terdapat juga beberapa file metadata yang menjelaskan isi setiap kolom.
sparklyr dapat mengimpor file parquet menggunakan spark_read_parquet(). Fungsi ini menerima sebuah koneksi Spark, sebuah string yang menamai Spark DataFrame yang akan dibuat, dan path ke direktori parquet. Perhatikan bahwa fungsi ini akan mengimpor data langsung ke Spark, yang umumnya lebih cepat dibandingkan mengimpor data ke R, lalu menggunakan copy_to() untuk menyalin data dari R ke Spark.
spark_read_parquet(sc, "a_dataset", "path/to/parquet/dir")
Latihan ini merupakan bagian dari kursus
Pengantar Spark dengan sparklyr di R
Instruksi latihan
Sebuah koneksi Spark telah dibuat untuk Anda sebagai spark_conn. Sebuah string yang menunjuk ke direktori parquet (pada sistem berkas tempat R berjalan) telah dibuat untuk Anda sebagai parquet_dir.
- Gunakan
dir()untuk membuat daftar path file absolut dari file di direktori parquet, dan simpan hasilnya kefilenames.- Argumen pertama harus direktori yang filenya akan Anda daftar, yaitu
parquet_dir. - Untuk mengambil path file absolut (bukan relatif), Anda juga harus memberikan
full.names = TRUE.
- Argumen pertama harus direktori yang filenya akan Anda daftar, yaitu
- Buat sebuah
data_framedengan dua kolom.filenameharus berisi nama file yang baru saja Anda ambil, tanpa bagian direktori. Buat ini dengan memberikan nama file kebasename().size_bytesharus berisi ukuran file dari file-file tersebut. Buat ini dengan memberikan nama file kefile.size().
- Gunakan
spark_read_parquet()untuk mengimpor data timbre ke Spark, dan simpan hasilnya ketimbre_tbl.- Argumen pertama harus koneksi Spark.
- Argumen kedua harus
"timbre". - Argumen ketiga harus
parquet_dir.
Latihan interaktif langsung praktik
Cobalah latihan ini dengan melengkapi kode contoh ini.
# 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 <- ___