23 июня 2023 года опубликован очередной релиз Apache Spark 3.4.1, который считается отладочным выпуском для предыдущего, содержащий исправления стабильности. Помимо исправления ошибок, в нем также 16 новых фичей и более 20 улучшений, самые главные из которых мы рассмотрим далее.
Исправления ошибок и новые фичи Apache Spark 3.4.1
Поскольку выпуск считается отладочным, начнем с исправления ошибок, которых более 50. В частности, исправлена проблема, когда внешнее соединение с использованием joinWith для DataFrames возвращает строки с нулевыми полями вместо NULL-значений. Исправлено разрешение столбца при полном внешнем соединении с выражением USING, включая случай, когда ссылки на ключ определенной стороны в соединении USING могут иметь неверную допустимость значений NULL. Также исправлена ошибка при соединениях с подзапросом в состоянии, если кодегенерация всего этапа и адаптивное выполнение отключены. Устранена ошибка кодогенерации, когда связанное условие полного внешнего соединения имеет несколько ссылок на один и тот же столбец на стороне потока. Теперь драйвер Spark не будет зависает с ошибкой нехватки памяти во время трансляции при включенной оптимизации AQE. Устранена проблема StackOverflowError при чтении JSON-документа, не соответствующего схеме, а также исправлена ошибка функции createDataFrame() из схемы сложного типа. Исправлена ошибка, из-за которой логика функции обрезки (trim) неправильно обрабатывала управляющие символы ASCII.
Устранена проблема с функцией DataFrame.to(schema), которая давала сбой при наличии вложенного поля, не допускающее значение NULL, в поле, допускающем значение NULL. Устранена обработка отсутствующих свойств hadoopProperties и metricsProperties, а также зависание Spark-приложения, когда YarnAllocator добавляет запущенные исполнители после обработки завершенных контейнеров. Наконец, теперь пользовательский интерфейс структурированной потоковой передачи корректно отображает неудачные запросы.
Помимо исправления ошибок, обновлены некоторые зависимости: snappy-java до версий 1.1.10.0 и 1.1.10.1, cloudpickle до версии 2.2.1 и формата ORC до версии 1.8.4. Пакет cloudpickle позволяет сериализовать конструкции Python, не поддерживаемые модулем pickle по умолчанию из стандартной Python-библиотеки. Этот пакет особенно полезен для кластерных вычислений , когда код Python отправляется по сети для выполнения на удаленных хостах, что часто бывает в кластере Spark.
Также добавлены новые фичи:
- поддержка JDBC в DataFrameReader;
- широковещательная трансляция в функции Scala;
- реализация функций DataFrameStatFunctions и DataFrameNaFunctions;
- класс имени столбца (ColumnName) для подключения к датафрейму;
- API TempView в датасет;
- версия и время датасета (Dataset.version и Dataset.time), а также Dataset.semanticHash;
- второй метод groupBy в API Dataset;
- API исходного типизированного датасета;
- имплицитные свойства SparkSession, которые позволяют делать дает неявные преобразования для преобразования объектов Scala (включая RDD) в объекты Dataset, DataFrame, Columns или поддержки таких преобразований через кодировщики. Это специфичные для Scala неявные методы для преобразования обычных объектов Scala в файлы DataFrame.
- конфигурация среды исполнения RuntimeConf и типизированные столбцы TypedColumn;
- поддержка пользовательских расширений в клиенте Spark Connect Scala;
- функции createDataFrame() и createDataset() в SparkSession;
- поддержка именованных параметров в именованных общих табличных выражениях (CTE), чтобы выполнять сложные SQL-запросы.
Узнать больше о новинка свежего релиза и освоить все возможности Apache Spark для разработки приложений аналитики больших данных вы сможете на специализированных курсах в нашем лицензированном учебном центре обучения и повышения квалификации для разработчиков, менеджеров, архитекторов, инженеров, администраторов, Data Scientist’ов и аналитиков Big Data в Москве:
- Основы Apache Spark для разработчиков
- Анализ данных с Apache Spark
- Потоковая обработка в Apache Spark
- Машинное обучение в Apache Spark
- Графовые алгоритмы в Apache Spark
Источники