Compatibilité avec Apache Hive

S’applique à :check marked yes Databricks Runtime

Apache Spark SQL dans Azure Databricks est conçu pour être compatible avec l’infrastructure Apache Hive, incluant la connectivité au metastore, les SerDes et les fonctions définies par l’utilisateur.

SerDes et fonctions définies par l’utilisateur

Les SerDes et fonctions définies par l’utilisateur de Hive sont basées sur Hive 1.2.1.

Connectivité au metastore

Pour plus d’informations sur la façon de connecter Azure Databricks à un metastore Hive hébergé en externe, consultez Metastore Apache Hive externe (hérité).

Fonctionnalités Hive prises en charge

Spark SQL prend en charge la grande majorité des fonctionnalités Hive, telles que :

  • Instructions de requête Hive, à savoir :
    • SELECT
    • GROUP BY
    • ORDER BY
    • CLUSTER BY
    • SORT BY
  • Toutes les expressions Hive, à savoir :
    • Expressions relationnelles (=, , ==, <>, <, >, >=, <=, etc.)
    • Expressions arithmétiques (+, -, *, /, %, etc.)
    • Expressions logiques (AND, &&, OR, ||, etc.)
    • Constructeurs de type complexe
    • Expressions mathématiques (sign, ln, cos, etc.)
    • Expressions de chaîne (instr, length, printf, etc.)
  • Fonctions définies par l’utilisateur (UDF)
  • Fonctions d’agrégation définies par l’utilisateur (UDAF)
  • Formats de sérialisation définis par l’utilisateur (SerDes)
  • Fonctions Windows
  • Jointures
    • JOIN
    • {LEFT|RIGHT|FULL} OUTER JOIN
    • LEFT SEMI JOIN
    • CROSS JOIN
  • Unions
  • Sous-requêtes
    • SELECT col FROM ( SELECT a + b AS col from t1) t2
  • échantillonnage
  • Expliquer
  • Tables partitionnées, y compris l’insertion de partition dynamique
  • Affichage
  • Grande majorité des instructions DDL, à savoir :
    • CREATE TABLE
    • CREATE TABLE AS SELECT
    • ALTER TABLE
  • La plupart des types de données Hive, à savoir :
    • TINYINT
    • SMALLINT
    • INT
    • bigint
    • BOOLEAN
    • FLOAT
    • DOUBLE
    • STRING
    • BINARY
    • timestamp
    • DATE
    • ARRAY<>
    • MAP<>
    • STRUCT<>

Fonctionnalités Hive non prises en charge

Les sections suivantes contiennent la liste des fonctionnalités Hive que Spark SQL ne prend pas en charge. La plupart de ces fonctionnalités sont rarement utilisées dans des déploiements Hive.

Principales fonctionnalités Hive

  • Écriture dans une table compartimentée créée par Hive
  • Mises à jour à granularité fine ACID

Fonctionnalités Hive ésotériques

  • Type d’Union
  • Jointure unique
  • Collecte des statistiques de colonnes : Spark SQL n’effectue pas actuellement d’analyses superposables (piggyback) pour collecter des statistiques de colonne, et prend uniquement en charge le remplissage du champ sizeInBytes du metastore Hive

Formats d’entrée et de sortie Hive

  • Format de fichier pour l’interface CLI : pour les résultats qui reviennent à l’interface CLI, Spark SQL prend en charge uniquement TextOutputFormat
  • Archive Hadoop

Optimisations de Hive

Quelques optimisations de Hive ne sont pas incluses dans Spark. Certaines d’entre elles (tels les index) sont moins importantes en raison du modèle de calcul en mémoire de Spark SQL.

  • Index bitmap de niveau du bloc et colonnes virtuelles (utilisées pour générer des index).
  • Déterminer automatiquement le nombre de réducteurs pour les jointures et groupbys : dans Spark SQL, vous devez contrôler le degré de parallélisme après lecture aléatoire à l’aide de SET spark.sql.shuffle.partitions=[num_tasks];.
  • Indicateur d’asymétrie des données : Spark SQL ne suit pas l’indicateur d’asymétrie des données dans Hive.
  • Indicateur STREAMTABLE dans join : Spark SQL ne suit pas l’indicateur STREAMTABLE.
  • Fusionner plusieurs petits fichiers pour les résultats de requête : si la sortie des résultats contient plusieurs petits fichiers, Hive peut éventuellement les fusionner en un moindre nombre de fichiers volumineux pour éviter le dépassement des métadonnées HDFS. Spark SQL ne prend pas cela en charge.