Compatibilità di Apache Hive

Si applica a:check marked yes 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 BY
    • 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)
  • 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 edizione Standard MI JOIN
    • CROSS JOIN
  • Unioni
  • Sottoquery
    • edizione Standard LECT col FROM ( edizione Standard LECT a + b AS col from t1) t2
  • Campionamento
  • Explain
  • Tabelle partizionate, incluso l'inserimento di partizioni dinamiche
  • Visualizza
  • La maggior parte delle istruzioni DDL, tra cui:
    • CREATE TABLE
    • CREATE TABLE AS SELECT
    • MODIFICA TABELLA
  • La maggior parte dei tipi di dati Hive, tra cui:
    • TINYINT
    • SMALLINT
    • INT
    • bigint
    • BOOLEAN
    • FLOAT
    • DOUBLE
    • STRING
    • BINARY
    • TIMESTAMP
    • DATE
    • MATRICE<>
    • 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'hint STREAMTABLE .
  • 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.