Compatibilidade com o Apache Hive

Aplica-se a: caixa de seleção marcada Databricks Runtime

O SQL do Apache Spark no Azure Databricks foi projetado para ser compatível com o Apache Hive, incluindo conectividade do metastore, SerDes e UDFs.

SerDes e UDFs

O Hive SerDes e os UDFs são baseados no Hive 1.2.1.

Conectividade do metastore

Confira metastore do Apache Hive externo (herdado) para obter informações sobre como conectar o Azure Databricks a um metastore do Hive hospedado externamente.

Recursos do Hive com suporte

O SQL do Spark dá suporte à grande maioria dos recursos do Hive, como:

  • Instruções de consulta do Hive, incluindo:
    • SELECT
    • GROUP BY
    • ORDER BY
    • CLUSTER POR
    • SORT BY
  • Todas as expressões de Hive, incluindo:
    • Expressões relacionais em (=, , ==, <>, <, >, >=, <=, etc)
    • Expressões aritméticas em (+, -, *, /, %, etc)
    • Expressões lógicas em (AND, &&, OR, ||, etc.)
    • Construtores de tipo complexo
    • Expressões matemáticas (Sign, ln, cos, etc.)
    • Expressões de cadeia de caracteres (Instr, comprimento, printf, etc.)
  • Funções definidas pelo usuário (UDF)
  • UDAF (funções de agregação definidas pelo usuário)
  • SerDes (formatos de serialização definidos pelo usuário)
  • Funções da janela
  • Junções
    • JOIN
    • {LEFT | DIREITA | COMPLETO} JUNÇÃO EXTERNA
    • SEMI-JUNÇÃO À ESQUERDA
    • CROSS JOIN
  • Uniões
  • Subconsultas
    • Selecione Col de (selecione a + b como Col. T1) T2
  • amostragem
  • Explicar
  • Tabelas particionadas, incluindo inserção de partição dinâmica
  • Exibir
  • Grande maioria das instruções DDL, incluindo:
    • CREATE TABLE
    • CREATE TABLE AS SELECT
    • ALTER TABLE
  • A maioria dos tipos de dados do Hive, incluindo:
    • TINYINT
    • SMALLINT
    • INT
    • bigint
    • BOOLEAN
    • FLOAT
    • DOUBLE
    • STRING
    • BINARY
    • timestamp
    • DATE
    • MATRIZ<>
    • MAPA<>
    • STRUCT<>

Funcionalidade de Hive sem suporte

As seções a seguir contêm uma lista de recursos do Hive para os quais o SQL do Spark não dá suporte. A maioria desses recursos raramente é usada em implantações do Hive.

Principais recursos do Hive

  • Gravando na tabela de buckets criada pelo Hive
  • Atualizações refinadas de ACID

Recursos do Hive do herméticos

  • Tipo de união
  • Junção exclusiva
  • Coleta de estatísticas de coluna: o SQL do Spark não acumula verificações para coletar estatísticas de coluna no momento e só dá suporte ao preenchimento do campo sizeInBytes da metastore do Hive

Formatos de entrada e saída do Hive

  • Formato de arquivo para a CLI: para obter resultados que são exibidos de volta para a CLI, o SQL do Spark dá suporte apenas a TextOutputFormat
  • Arquivo do Hadoop

Otimizações de Hive

Algumas otimizações do Hive não estão incluídas no Spark. Alguns deles (como índices) são menos importantes devido ao modelo computacional na memória do SQL do Spark.

  • Índices de bitmap de nível de bloco e colunas virtuais (usados para criar índices).
  • Determinar automaticamente o número de redutores para junções e groupbys: no SQL do Spark, você precisa controlar o grau de paralelismo após a ordem aleatória usando SET spark.sql.shuffle.partitions=[num_tasks];.
  • Sinalizador de dados de distorção: o SQL do Spark não segue o sinalizador de dados de distorção no Hive.
  • STREAMTABLEdica em junção: o SQL do Spark não segue a STREAMTABLE dica.
  • Mesclar vários arquivos pequenos para resultados da consulta: se a saída do resultado contiver vários arquivos pequenos, o Hive poderá, opcionalmente, mesclar os arquivos pequenos em menos arquivos grandes para evitar estourar os metadados do HDFS. O SQL do Spark não dá suporte a isso.