Kom igångKom igång gratis

Arbeta med parquet-filer

CSV-filer är utmärkta för att spara innehållet i rektangulära dataobjekt (som R:s data.frames och Sparks DataFrames) till disk. Problemet är att de är långsamma att läsa och skriva, vilket gör dem opraktiska för stora datamängder. Parquet-filer erbjuder ett mer högpresterande alternativ. Förutom att användas för Spark-data kan parquet-filer även användas med andra verktyg i Hadoop-ekosystemet, som Shark, Impala, Hive och Pig.

Tekniskt sett är parquet-fil ett missvisande begrepp. När du lagrar data i parquet-format får du faktiskt en hel katalog med filer. Datan fördelas över flera .parquet-filer, vilket gör det enkelt att lagra den på flera maskiner, och det finns även vissa metadatafiler som beskriver innehållet i varje kolumn.

sparklyr kan importera parquet-filer med spark_read_parquet(). Den här funktionen tar en Spark-anslutning, en sträng som namnger den Spark DataFrame som ska skapas, samt en sökväg till parquet-katalogen. Observera att funktionen importerar datan direkt till Spark, vilket vanligtvis är snabbare än att först importera datan till R och sedan använda copy_to() för att kopiera datan från R till Spark.

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

Den här övningen är en del av kursen

Introduktion till Spark med sparklyr i R

Visa kurs

Övningsinstruktioner

En Spark-anslutning har skapats åt dig som spark_conn. En sträng som pekar på parquet-katalogen (i det filsystem där R körs) har skapats åt dig som parquet_dir.

  • Använd dir() för att lista de absoluta filsökvägarna för filerna i parquet-katalogen och tilldela resultatet till filenames.
    • Det första argumentet ska vara den katalog vars filer du listar, parquet_dir.
    • För att hämta de absoluta (snarare än relativa) filsökvägarna ska du även ange full.names = TRUE.
  • Skapa en data_frame med två kolumner.
    • filename ska innehålla de filnamn du just hämtade, utan katalogdelen. Skapa den genom att skicka filnamnen till basename().
    • size_bytes ska innehålla filstorlekarna för dessa filer. Skapa den genom att skicka filnamnen till file.size().
  • Använd spark_read_parquet() för att importera timbre-datan till Spark och tilldela resultatet till timbre_tbl.
    • Det första argumentet ska vara Spark-anslutningen.
    • Det andra argumentet ska vara "timbre".
    • Det tredje argumentet ska vara parquet_dir.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

# 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 <- ___
Redigera och kör kod