НачатьНачать бесплатно

Работа с файлами Parquet

CSV-файлы отлично подходят для сохранения прямоугольных объектов данных (например, data.frame в R или DataFrame в Spark) на диск. Однако их существенный недостаток — низкая скорость чтения и записи, что делает их непригодными для работы с большими наборами данных. Формат Parquet предлагает более производительную альтернативу. Файлы Parquet используются не только в Spark, но и в других инструментах экосистемы Hadoop: Shark, Impala, Hive и Pig.

Строго говоря, выражение файл Parquet не вполне точно. Когда данные сохраняются в формате Parquet, на диске создаётся целая директория файлов. Данные распределяются по нескольким файлам .parquet, что упрощает их хранение на нескольких машинах, а также создаются метаданные с описанием содержимого каждого столбца.

sparklyr позволяет импортировать файлы Parquet с помощью функции spark_read_parquet(). Она принимает подключение к Spark, строку с именем создаваемого Spark DataFrame и путь к директории Parquet. Обратите внимание: эта функция загружает данные напрямую в Spark, что, как правило, быстрее, чем сначала импортировать их в R, а затем использовать copy_to() для копирования данных из R в Spark.

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

Это упражнение является частью курса

Введение в Spark с sparklyr на R

Посмотреть курс

Инструкции к упражнению

Подключение к Spark уже создано и доступно как spark_conn. Строка с путём к директории Parquet (в файловой системе, где запущен R) доступна как parquet_dir.

  • С помощью dir() получите список абсолютных путей к файлам в директории Parquet и сохраните результат в переменную filenames.
    • Первый аргумент — директория, содержимое которой нужно перечислить: parquet_dir.
    • Чтобы получить абсолютные (а не относительные) пути, передайте также full.names = TRUE.
  • Создайте data_frame с двумя столбцами.
    • filename должен содержать имена файлов без пути к директории. Получите их, передав filenames в функцию basename().
    • size_bytes должен содержать размеры этих файлов. Получите их, передав filenames в функцию file.size().
  • С помощью spark_read_parquet() импортируйте данные о тембре в Spark и сохраните результат в переменную timbre_tbl.
    • Первый аргумент — подключение к Spark.
    • Второй аргумент — "timbre".
    • Третий аргумент — parquet_dir.

Интерактивное практическое упражнение

Попробуйте выполнить это упражнение, дополнив этот пример кода.

# 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 <- ___
Редактировать и запускать код