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


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

Область применения: флажок Databricks Runtime

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

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

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

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

Дополнительные сведения о подключении Azure Databricks к хранилищу метаданных Hive с внешним размещением в хранилище метаданных Hive см. в разделе "Внешний хранилище метаданных Apache Hive".

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

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

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

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

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

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

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

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

  • Union type
  • Unique join
  • Сбор статистики по столбцам. 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 такая возможность не поддерживается.