Сегодня поговорим о том, с какими наиболее распространенными форматами файлов способен поддерживать работу фреймворк Spark. Читайте далее про особенности обработки Big Data в Spark с помощью двух наиболее распространенных форматов файлов.
Какие форматы файлов наиболее популярны при обработке данных в Spark
Фреймворк Spark может работать с данными, которые загружаются из различных файлов. Для доступа к данным Spark использует интерфейсы InputFormat и OutputFormat, которые поддерживают множество форматов файлов (CSV, JSON, XLS, TXT и т.д) и систем хранения данных (например, HDFS, S3, Cassandra, HBase). В этой статье мы поговорим о следующих наиболее известных форматах файлов в Spark:
- текстовый формат – это файлы, содержимое которых воспринимается как набор строк с текстовыми значениями. Когда текстовый файл используется как источник данных, Spark интерпретирует каждую его строку как отдельный элемент набора RDD. RDD (Resilient Distributed Dataset) – это неизменяемая коллекция объектов данных. Каждый такой набор делится на определенное количество частей, которые обрабатываются различными узлами в кластере.
- CSV-формат — (Comma-Separated Values – данные, разделенные запятой) – это данные, которые представляют собой набор значений, разделенных специальным разделителем (как правило, запятой). Такие файлы содержат фиксированное число полей в каждой строке. Таким образом CSV-файл можно представить в виде таблицы с данными. Этот тип файлов можно загружать в виде текста, как рассматривалось выше, а можно в виде датафрейма. Датафрейм (dataframe) – это двумерная маркированная структура данных. Визуально она представляет собой таблицу, состоящую из фиксированного числа строк и столбцов. Датафрейм служит для быстрой и удобной работы с большими данными.
Особенности работы с файлами в Spark: несколько практических примеров
Для того, чтобы загрузить данные в текстовом формате используется метод textFile
:
my_text=sc.textFile('my_tweets.csv') type(my_text) ##pyspark.rdd.RDD
Как видно из кода, метод textFile()
преобразовал наши данные в распределенный набор RDD независимо от его расширения.
А теперь рассмотрим, как происходит сохранение RDD в текстовый формат:
typic_rdd = sc.parallelize([1,2,3,4,5,6,7,8]) typic_rdd.saveAsTextFile('my_text')
Метод saveAsTextFile()
создает новый каталог и помещает туда множество файлов с содержимым RDD. Такой подход дает возможность сохранять данные с нескольких узлов одновременно.
Рассмотрим, как можно загрузить данные из CSV-источника. Этот тип файлов можно загружать в виде текста, как рассматривалось выше, а можно в виде датафрейма через специальный метод read.csv()
:
csv_data = spark.read.option('header','True').csv('my_tweets.csv',sep=',') type(csv_data)##pyspark.sql.dataframe.DataFrame
Как мы видим, метод read.csv()
загрузил наши данные и создал датафрейм. Теперь мы можем обрабатывать данные и применять к нему методы для работы с датафреймами.
Так как наши данные представляют собой Spark-датафрейм, для более удобного сохранения мы можем перевести его в Pandas-датафрейм с помощью метода toPandas()
и напрямую сохранить в формате CSV:
pandas_data=csv_data.toPandas() pandas_data.to_csv('new_data.csv')
Таким образом, Spark обеспечивает разработчика возможностью работать с данными из внешних источников, что делает его весьма полезным инструментом для Data Scientist’а и разработчика Big Data приложений.
Код курса
CORS
Ближайшая дата курса
по запросу
Продолжительность
ак.часов
Стоимость обучения
0 руб.
Более подробно про применение Apache Spark в проектах анализа больших данных, разработки Big Data приложений и прочих прикладных областях Data Science вы узнаете на практических курсах по Spark в нашем лицензированном учебном центре обучения и повышения квалификации ИТ-специалистов в Москве:
- Графовые алгоритмы в Apache Spark
- Машинное обучение в Apache Spark
- Потоковая обработка в Apache Spark
- Основы Apache Spark для разработчиков
- Анализ данных с Apache Spark
- Разработка и внедерение ML-решений
- Графовые алгоритмы. Бизнес-приложения
Источники
- https://spark.apache.org/documentation.html
- К.Харау, Э.Ковински, П.Венделл, М.Захария. Изучаем Spark: молниеносный анализ данных