Как очистить большие данные для Apache Spark SQL: краткий обзор Cleanframes

Автор Категория ,
Как очистить большие данные для Apache Spark SQL: краткий обзор Cleanframes

Поскольку курсы по Apache Spark нужны не только разработчикам распределенных приложений, но и аналитикам больших данных с дата-инженерами, сегодня мы рассмотрим, какие средства этого фреймворка позволяют выполнять очистку данных и повышать их качество. Читайте далее, что такое Cleanframes в Spark SQL, чем полезна эта библиотека и каковы ее ограничения.

Apache Spark и Data Quality: как повысить качество данных для аналитики Big Data

Мы уже писали, что качество данных (Data Quality) играет важнейшую роль в аналитике Big Data. Поэтому очистка данных (Data cleansing) выполняется не только при подготовке датасета к моделированию с использованием алгоритмов машинного обучения (Machine Learning). Выявление и исправление ошибок, опечаток и прочих несоответствий данных с целью повышения их качества необходимо для применения любых методов анализа, в т.ч. с помощью стандартных SQL-запросов [1].

Из комплексных фреймворков улучшения Data Quality для Apache Spark можно отметить Optimus – open-source платформу для предварительной обработки, очистки и исследовательского анализа данных. Optimus включает несколько инструментов обработки Big Data, предлагая простую, быструю параллельную и масштабируемую очистку данных, их исследование и визуализацию, а также создание моделей Machine Learning [2].

Однако, если в вашем случае для аналитики больших данных с помощью Apache Spark нет необходимости в машинном обучении и требуется инструмент попроще, стоит обратить внимание на библиотеку Cleanframes. Этот небольшой модуль для Spark SQL предоставляет типовой класс для очистки данных, делая ее автоматизированной и удобной за счет парадигмы обобщённого программирование (generic programming) [3], суть которой в таком описании данных и алгоритмов, чтобы его можно применять к различным типам данных, не меняя само это описание [4]. Как это устроено, мы рассмотрим далее.

 

Что такое Cleanframes и при чем здесь Spark SQL

Spark-библиотека Cleanframes безопасно разрешает преобразования, связанные с типом, во время компиляции. Библиотека поставляется с общими базовыми преобразованиями и может быть расширена с помощью пользовательских. Поскольку весь код генерируется компилятором, нет потери производительности. Скачать библиотеку и посмотреть ее техническое описание можно на GitHub [3].

Cleanframes предоставляет метод clean(), который расширяет код за счет неявных разрешений на основе элементов класса case. Компилятор Scala применяет определенный метод к соответствующему типу элемента. Cleanframes поставляется с предопределенными реализациями, которые доступны путем простого импорта библиотеки [5]:

import cleanframes.syntax._

import cleanframes.instances.all._

После импорта библиотеки можно применить к датафрейму (Dataframe, одна из основных структур данных в Apache Spark) Example метод clean(): frame.clean[Example].

Поскольку преобразования используют пакет функций Spark SQL, они удобны для оптимизатора структурированных запросов Catalyst, о котором мы рассказывали здесь. Таким образом, очевидными достоинствами библиотеки Cleanframes являются следующие [5]:

  • шаблон преобразований выполняется компилятором;
  • общие преобразования проекта могут быть определены в одном месте и повторно использованы;
  • нет дополнительных накладных расходов по сравнению разработкой кода «вручную»;
  • изменения в case-классах автоматически отражаются и применяются в преобразованиях во время компиляции.

Обратной стороной этих преимуществ являются следующие ограничения, которые могут рассматриваться как недостатки [5]:

  • неявные преобразования, скрытые от разработчика;
  • в основном, подходит только для простых типов данных, т.к. как и любая Scala-библиотека, Cleanframes, в отличие от Java-аналогов, основана не на API, а типизации классов. Это обеспечивает безопасность кода во время компиляции и снижает накладные расходы на вычисления.

Впрочем, подход неявного преобразования типов данных предоставляет разработчику Big Data больше свободы, позволяя [6]:

  • переопределить пользовательские преобразования;
  • добавить поддержку новых типов
  • определить преобразование с помощью пользовательских функций Spark (UDF, User Defined Functions);
  • преобразовать вложенные классы case;
  • обрабатывать класс case с одинаковыми типами.

Подробные примеры преобразования данных с использованием Spark SQL библиотеки Cleanframes приведены в источниках [5, 6]. Завтра мы продолжим разговор про обучение Apache Spark для разработчиков распределенных приложений и рассмотрим проблему утечки памяти при работе с этим фреймворком.

А другие практические особенности разработки распределенных приложений и применения Apache Spark для аналитики больших данных в проектах цифровизации частного бизнеса, а также государственных и муниципальных предприятий, вы узнаете на специализированных курсах в нашем лицензированном учебном центре обучения и повышения квалификации для разработчиков, менеджеров, архитекторов, инженеров, администраторов, Data Scientist’ов и аналитиков Big Data в Москве:

 

 

Источники

  1. https://en.wikipedia.org/wiki/Data_cleansing
  2. https://hi-optimus.com/
  3. https://github.com/funkyminds/cleanframes
  4. https://en.wikipedia.org/wiki/Generic_programming
  5. https://medium.com/@dawid.rutowicz/cleanframes-data-cleansing-library-for-apache-spark-eaae526ee958
  6. https://medium.com/@dawid.rutowicz/cleanframes-data-cleansing-library-for-apache-spark-part-2-b59685fbef8a