Поделиться через


Совместимость с Apache Hive

Область применения: отмечено как "Да" Databricks Runtime

Apache Spark SQL в Azure Databricks разработан для совместимости с Apache Hive, включая подключение к метахранилищу, операции сериализации и десериализации, а также пользовательские функции.

SerDes и определяемые пользователем функции (UDF)

Сериализация-десериализация и определяемые пользователем функции основаны на Hive 1.2.1.

Возможность подключения хранилища метаданных

См. раздел Внешний хранилище метаданных Apache Hive (устаревший) для получения информации о подключении Azure Databricks к внешнему хранилищу метаданных Hive.

Поддерживаемые функции Hive

Spark SQL поддерживает большинство функций Hive, таких как:

  • Запросы Hive, включая:
    • SELECT
    • GROUP BY
    • ORDER BY
    • CLUSTER BY
    • SORT BY
  • Все выражения Hive, в том числе:
    • Реляционные выражения (=, , ==, <>, <, >, >=, <= и т. д.)
    • Арифметические выражения (+, -, *, /, % и т. д.)
    • Логические выражения (AND, &>ИЛИ, ||и т. д.)
    • Конструкторы сложных типов
    • Математические выражения (sign, ln, cos и т. д.)
    • Строковые выражения (instr, length, printf и т. д.)
  • Пользовательские функции (UDF)
  • Агрегатные функции, определяемые пользователем
  • Определяемые пользователем форматы сериализации (SerDes)
  • Функции окна
  • Присоединения
    • JOIN
    • {ЛЕВОЕ|ПРАВОЕ|ПОЛНОЕ} ВНЕШНЕЕ JOIN
    • ЛЕВАЯ ПОЛУ JOIN
    • КРЕСТ JOIN
  • Объединения
  • Вложенные запросы
    • SELECT col FROM (SELECT a + b AS col из t1) t2
  • Образец
  • Объяснить
  • Секционированные таблицы, включая динамическую вставку секций
  • Просмотр
  • Подавляющее большинство инструкций DDL, в том числе:
    • CREATE TABLE
    • CREATE TABLE AS SELECT
    • ALTER TABLE
  • Большинство типов данных Hive, в том числе:
    • TINYINT
    • SMALLINT
    • INT
    • BIGINT
    • BOOLEAN
    • поплавок
    • ДВОЙНОЙ
    • STRING
    • БИНАРНЫЙ
    • TIMESTAMP
    • Дата
    • ARRAY<>
    • КАРТА<>
    • STRUCT<>

Неподдерживаемые функции Hive

В следующих разделах содержится список функций Hive, которые не поддерживаются SQL Spark. Большинство этих функций редко используются в развертываниях Hive.

Основные функции Hive

  • Запись в сегментированную таблицу, созданную Hive
  • Обновления ACID с высокой степенью детализации

Функции, используемые только в Hive

  • Объединённый тип
  • Уникальное соединение
  • Сбор статистических данных столбцов: в настоящий момент Spark SQL не использует совместные сканирования для сбора статистики столбцов и поддерживает заполнение поля sizeInBytes в хранилище метаданных Hive.

Форматы входных и выходных данных Hive

  • Формат файла для CLI. Для передаваемых в CLI результатов Spark SQL поддерживает только TextOutputFormat.
  • Архив Hadoop

Оптимизация Hive

Несколько способов оптимизации Hive не поддерживаются в Spark. Некоторые из них (например, индексы) не так важны из-за того, что в Spark SQL вычислительная модель находится в памяти.

  • Индексы растрового изображения на уровне блока и виртуальные столбцы (используемые для сборки индексов).
  • Автоматическое определение числа модулей сжатия для операторов join и groupby. В Spark SQL необходимо управлять степенью параллелизма после перемешивания с помощью SET spark.sql.shuffle.partitions=[num_tasks];.
  • Флаг перекоса данных: Spark SQL не поддерживает флаг перекоса данных, как это делает Hive.
  • STREAMTABLE подсказка в соединении: Spark SQL не следует подсказке STREAMTABLE.
  • Слияние нескольких маленьких файлов в результатах запроса. Если в Hive выходные данные запроса содержат несколько маленьких файлов, при необходимости их можно объединить в меньшее число больших файлов, чтобы избежать перегрузки метаданных HDFS. В Spark SQL такая возможность не поддерживается.