Compatibilidade com o Apache Hive
Aplica-se a: 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.)
- Expressões relacionais em (
- 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.
STREAMTABLE
dica em junção: o SQL do Spark não segue aSTREAMTABLE
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.