Compatibilità di Apache Hive
Si applica a: Databricks Runtime
Apache Spark SQL in Azure Databricks è progettato per essere compatibile con Apache Hive, tra cui connettività metastore, SerDes e funzioni definite dall'utente.
SerDes e funzioni definite dall'utente
Hive SerDes e funzioni definite dall'utente si basano su Hive 1.2.1.
Connettività metastore
Vedere Metastore Apache Hive esterno (legacy) per informazioni su come connettere Azure Databricks a un metastore Hive ospitato esternamente.
Funzionalità Hive supportate
Spark SQL supporta la maggior parte delle funzionalità Hive, ad esempio:
- Istruzioni di query Hive, tra cui:
- SELECT
- GROUP BY
- ORDER BY
- CLUSTER PER
- ORDINA PER
- Tutte le espressioni Hive, tra cui:
- Espressioni relazionali (
=
,⇔
,==
<>
,<
,>
,>=
, ,<=
e così via) - Espressioni aritmetiche (
+
,-
,*
,/
,%
e così via) - Espressioni logiche (AND, &&, OR, ||e così via)
- Costruttori di tipi complessi
- Espressioni matematiche (segno, ln, cos e così via)
- Espressioni stringa (instr, length, printf e così via)
- Espressioni relazionali (
- Funzioni definite dall'utente
- Funzioni di aggregazione definite dall'utente (UDAF)
- Formati di serializzazione definiti dall'utente (SerDes)
- Funzioni finestra
- Unisce
- JOIN
- {LEFT|RIGHT |FULL} OUTER JOIN
- LEFT SEMI JOIN
- CROSS JOIN
- Unioni
- Sottoquery
- SELECT col FROM ( SELECT a + b AS col from t1) t2
- Campionamento
- Spiega
- Tabelle partizionate, incluso l'inserimento di partizioni dinamiche
- Visualizza
- La maggior parte delle istruzioni DDL, tra cui:
- CREATE TABLE
- CREATE TABLE AS SELECT
- ALTER TABLE
- La maggior parte dei tipi di dati Hive, tra cui:
- TINYINT
- SMALLINT
- INT
- bigint
- BOOLEAN
- FLOAT
- DOUBLE
- STRING
- BINARY
- TIMESTAMP
- DATE
- ARRAY<>
- MAPPA<>
- STRUCT<>
Funzionalità Hive non supportate
Le sezioni seguenti contengono un elenco di funzionalità Hive non supportate da Spark SQL. La maggior parte di queste funzionalità viene usata raramente nelle distribuzioni Hive.
Funzionalità principali di Hive
- Scrittura in una tabella in bucket creata da Hive
- Aggiornamenti con granularità fine ACID
Caratteristiche dell'Hive esoterista
- Tipo di unione
- Join univoco
- Raccolta di statistiche sulle colonne: Spark SQL non esegue analisi di piggyback per raccogliere statistiche sulle colonne al momento e supporta solo il popolamento del campo sizeInBytes del metastore Hive
Formati di input e output Hive
- Formato di file per l'interfaccia della riga di comando: per i risultati che vengono visualizzati di nuovo nell'interfaccia della riga di comando, Spark SQL supporta solo TextOutputFormat
- Archivio Hadoop
Ottimizzazioni di Hive
Alcune ottimizzazioni di Hive non sono incluse in Spark. Alcuni di questi (ad esempio gli indici) sono meno importanti a causa del modello di calcolo in memoria di Spark SQL.
- Indici bitmap a livello di blocco e colonne virtuali (usati per compilare indici).
- Determinare automaticamente il numero di riduttori per join e groupby: in Spark SQL è necessario controllare il grado di parallelismo post-shuffle usando
SET spark.sql.shuffle.partitions=[num_tasks];
. - Flag di dati asimmetria: Spark SQL non segue il flag di dati asimmetria in Hive.
STREAMTABLE
hint in join: Spark SQL non segue l'hintSTREAMTABLE
.- Unire più file di piccole dimensioni per i risultati delle query: se l'output dei risultati contiene più file di piccole dimensioni, Hive può eventualmente unire i file di piccole dimensioni in un numero inferiore di file di grandi dimensioni per evitare l'overflow dei metadati HDFS. Spark SQL non lo supporta.