Совместимость с 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 такая возможность не поддерживается.