Mulai sekarangMulai gratis

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

Lihat Kursus

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 ke filenames.
    • 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.
  • Buat sebuah data_frame dengan dua kolom.
    • filename harus berisi nama file yang baru saja Anda ambil, tanpa bagian direktori. Buat ini dengan memberikan nama file ke basename().
    • size_bytes harus berisi ukuran file dari file-file tersebut. Buat ini dengan memberikan nama file ke file.size().
  • Gunakan spark_read_parquet() untuk mengimpor data timbre ke Spark, dan simpan hasilnya ke timbre_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 <- ___
Edit dan Jalankan Kode