Compatibilidad con Apache Hive

Se aplica a:check marked yes Databricks Runtime

Apache Spark SQL en Azure Databricks está diseñado para ser compatible con Apache Hive. Esta compatibilidad incluye la conectividad del metastore, SerDes y UDF.

SerDes y UDF

Los SERD y las UDF de Hive se basan en Hive 1.2.1.

Conectividad del metastore

Para obtener información sobre cómo conectar Azure Databricks a un metastore de Hive hospedado externamente, consulte Metastore externo de Apache Hive (heredado).

Características admitidas de Hive

Spark SQL admite la gran mayoría de las características de Hive, como:

  • Instrucciones para las consultas en Hive, incluidas:
    • SELECT
    • GROUP BY
    • ORDER BY
    • CLUSTER BY
    • SORT BY
  • Todas las expresiones de Hive, incluidas:
    • Expresiones relacionales (=, , ==, <>, <, >, >=, <=, etc.)
    • Expresiones aritméticas (+, -, *, /, %, etc.)
    • Expresiones lógicas (AND, &&, OR, ||, etc.)
    • Constructores de tipo complejo
    • Expresiones matemáticas (sign, ln, cos, etc.)
    • Expresiones de cadena (instr, length, printf, etc.)
  • Funciones definidas por el usuario (UDF)
  • Funciones de agregación definidas por el usuario (UDAF)
  • Formatos de serialización definidos por el usuario (SerDes)
  • Funciones de ventana
  • Combinaciones
    • JOIN
    • {LEFT|RIGHT|FULL} OUTER JOIN
    • LEFT SEMI JOIN
    • CROSS JOIN
  • Uniones
  • Subconsultas
    • SELECT col FROM ( SELECT a + b AS col from t1) t2
  • muestreo
  • Explicación
  • Tablas con particiones, incluida la inserción dinámica de particiones
  • Ver
  • Gran mayoría de las instrucciones DDL, incluidas:
    • CREATE TABLE
    • CREATE TABLE AS SELECT
    • ALTER TABLE
  • La mayoría de los tipos de datos de Hive, incluidos:
    • TINYINT
    • SMALLINT
    • INT
    • bigint
    • BOOLEAN
    • FLOAT
    • DOUBLE
    • STRING
    • BINARY
    • timestamp
    • DATE
    • ARRAY<>
    • MAP<>
    • STRUCT<>

Funcionalidad de Hive no admitida

Las siguientes secciones contienen una lista de características de Hive que Spark SQL no admite. La mayoría de ellas casi nunca se usan en implementaciones de Hive.

Características principales de Hive

  • Escritura en una tabla con cubos creada por Hive
  • Actualizaciones detalladas de ACID

Características esotéricas de Hive

  • Tipo de unión
  • Combinación única
  • Recopilación de estadísticas de columnas: por el momento Spark SQL no realiza exámenes mediante el modelo para recopilar estadísticas de las columnas, solo admite rellenar el campo sizeInBytes del metastore de Hive.

Formatos de entrada y salida de Hive

  • Formato de archivo para la CLI: para ver los resultados que se muestran cuando se vuelve a la CLI, Spark SQL solo admite TextOutputFormat
  • Archivo de Hadoop

Optimizaciones de Hive

Algunas optimizaciones de Hive no se incluyen en Spark. Algunos de ellos (como los índices) son menos importantes debido al modelo computacional en memoria de Spark SQL.

  • Índices de mapa de bits de nivel de bloque y columnas virtuales (se usan para generar índices).
  • Determinación de forma automática del número de reductores para combinaciones y agrupaciones: en Spark SQL, debe controlar el grado de paralelismo posterior al orden aleatorio mediante SET spark.sql.shuffle.partitions=[num_tasks];.
  • Marca de datos de sesgo: Spark SQL no sigue la marca de datos de sesgo en Hive.
  • Sugerencia de STREAMTABLE en la combinación: Spark SQL no sigue la sugerencia de STREAMTABLE.
  • Combinación de varios archivos pequeños en los resultados de la consulta: si la salida del resultado contiene varios archivos pequeños, Hive puede combinarlos opcionalmente en menos archivos grandes, con el fin de evitar desbordar los metadatos de HDFS. Spark SQL no lo admite.