BaşlayınÜcretsiz başlayın

Parquet dosyalarıyla çalışmak

CSV dosyaları, dikdörtgen veri nesnelerinin (R data.frame'leri ve Spark DataFrame'leri gibi) içeriğini diske kaydetmek için harikadır. Sorun şu ki, okumaları ve yazmaları gerçekten yavaştır; bu da onları büyük veri kümeleri için kullanışsız yapar. Parquet dosyaları daha yüksek performanslı bir alternatif sunar. Spark verilerinin yanı sıra, parquet dosyaları Hadoop ekosistemindeki diğer araçlarla da kullanılabilir: Shark, Impala, Hive ve Pig gibi.

Teknik olarak konuşursak, parquet dosyası ifadesi tam doğru değildir. Veriyi parquet formatında sakladığında aslında bir dizin dolusu dosya elde edersin. Veriler birden fazla .parquet dosyasına bölünür; bu sayede birden fazla makinede kolayca saklanabilir. Ayrıca her sütunun içeriğini tanımlayan bazı meta veri dosyaları da bulunur.

sparklyr, spark_read_parquet() kullanarak parquet dosyalarını içe aktarabilir. Bu fonksiyon bir Spark bağlantısı, oluşturulacak Spark DataFrame'inin adı olarak bir karakter dizisi ve parquet dizinine giden bir yol alır. Bu fonksiyonun veriyi doğrudan Spark'a aktaracağını unutma; bu genellikle önce veriyi R'a alıp sonra copy_to() ile R'dan Spark'a kopyalamaktan daha hızlıdır.

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

Bu egzersiz, kursun bir parçasıdır

R ile sparklyr kullanarak Spark’a Giriş

Kursa Göz Atın

Egzersiz talimatları

Senin için spark_conn olarak bir Spark bağlantısı oluşturuldu. Parquet dizinine işaret eden bir karakter dizisi de (R'ın çalıştığı dosya sisteminde) parquet_dir olarak hazır.

  • Parquet dizinindeki dosyaların tam (mutlak) dosya yollarını listelemek için dir() kullan ve sonucu filenames değişkenine ata.
    • İlk argüman, dosyalarını listelediğin dizin olmalı: parquet_dir.
    • Göreli yerine mutlak dosya yollarını almak için full.names = TRUE de geçir.
  • İki sütunlu bir data_frame oluştur.
    • filename, az önce aldığın dosya adlarını dizin kısmı olmadan içermeli. Bunu dosya adlarını basename() fonksiyonuna vererek oluştur.
    • size_bytes, bu dosyaların bayt cinsinden boyutlarını içermeli. Bunu dosya adlarını file.size() fonksiyonuna vererek oluştur.
  • Timbre verisini Spark'a aktarmak için spark_read_parquet() kullan ve sonucu timbre_tbl değişkenine ata.
    • İlk argüman Spark bağlantısı olmalı.
    • İkinci argüman "timbre" olmalı.
    • Üçüncü argüman parquet_dir olmalı.

Uygulamalı etkileşimli egzersiz

Bu egzersizi bu örnek kodu tamamlayarak deneyin.

# 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 <- ___
Kodu Düzenle ve Çalıştır