Apache Hive-Kompatibilität

Gilt für:check marked yes Databricks Runtime

Apache Spark SQL in Azure Databricks ist so konzipiert, dass es mit dem Apache Hive kompatibel ist, einschließlich Metastorekonnektivität, SerDes und UDFs.

SerDes und UDFs

Hive SerDes und UDFs basieren auf Hive 1.2.1.

Metastorekonnektivität

Informationen zum Verbinden von Azure Databricks mit einem extern gehosteten Hive-Metastore finden Sie unter Externer Apache Hive-Metastore (Legacy).

Unterstützte Hive-Features

Spark SQL unterstützt die überwiegende Mehrheit der Hive-Features, z. B.:

  • Hive-Abfrageanweisungen, einschließlich:
    • SELECT
    • GROUP BY
    • ORDER BY
    • CLUSTER BY
    • SORT BY
  • Alle Hive-Ausdrücke, einschließlich:
    • Relationale Ausdrücke (=, , ==, <>, <, >, >=, <= usw.)
    • Arithmetische Ausdrücke (+, -, *, /, % usw.)
    • Logische Ausdrücke (UND, &&, ODER, || usw.)
    • Komplexe Typkonstruktoren
    • Mathematische Ausdrücke (sign, ln, cos usw.)
    • Zeichenfolgenausdrücke (instr, length, printf usw.)
  • Benutzerdefinierte Funktionen (User Defined Functions, UDF)
  • Benutzerdefinierte Aggregatfunktionen (UDAF)
  • Benutzerdefinierte Serialisierungsformate (SerDes)
  • Fensterfunktionen
  • Joins
    • JOIN
    • {LEFT|RIGHT|FULL} OUTER JOIN
    • LEFT SEMI JOIN
    • CROSS JOIN
  • Unions
  • Unterabfragen
    • SELECT col FROM ( SELECT a + b AS col from t1) t2
  • Stichproben
  • Erläutern
  • Partitionierte Tabellen, einschließlich der dynamischen Einfügung von Partitionen
  • Ansicht
  • Große Mehrheit der DDL-Anweisungen, einschließlich:
    • CREATE TABLE
    • CREATE TABLE AS SELECT
    • ALTER TABLE
  • Die meisten Hive-Datentypen, einschließlich:
    • TINYINT
    • SMALLINT
    • INT
    • BIGINT
    • Boolean
    • FLOAT
    • Double
    • STRING
    • BINARY
    • TIMESTAMP
    • DATE
    • ARRAY<>
    • MAP<>
    • STRUCT<>

Nicht unterstützte Hive-Funktionalität

Die folgenden Abschnitte enthalten eine Liste der Hive-Features, die von Spark SQL nicht unterstützt werden. Die meisten dieser Features werden nur selten in Hive-Bereitstellungen verwendet.

Wichtige Hive-Features

  • Schreiben in eine Bucket-Tabelle, die von Hive erstellt wurde
  • Differenzierte ACID-Updates

Geheime Hive-Features

  • Union-Typ
  • Eindeutiger Join
  • Erfassen von Spaltenstatistiken: Spark SQL führt derzeit keine Piggyback-Überprüfung aus, um Spaltenstatistiken zu erfassen. Darüber hinaus wird nur das Auffüllen des sizeInBytes-Felds des Hive-Metastores unterstützt.

Hive-Eingabe- und -Ausgabeformate

  • Dateiformat für die CLI: Für Ergebnisse, die an die CLI zurückgegeben werden, unterstützt Spark SQL nur das Textausgabeformat.
  • Hadoop-Archiv

Hive-Optimierungen

Einige Hive-Optimierungen sind in Spark nicht enthalten. Einige davon (z. B. Indizes) sind aufgrund des In-Memory-Berechnungsmodells von Spark SQL weniger wichtig.

  • Bitmapindizes auf Blockebene und virtuelle Spalten (werden zum Erstellen von Indizes verwendet).
  • Automatisches Bestimmen der Anzahl von Reducern für JOIN- und GROUP BY-Operationen: In Spark SQL müssen Sie den Grad der Post-Shuffle-Parallelität mit SET spark.sql.shuffle.partitions=[num_tasks]; steuern.
  • Skew-Datenflag: Spark-SQL beachtet nicht das Skew-Datenflag in Hive.
  • STREAMTABLE-Hinweis in JOIN: Spark SQL beachtet den STREAMTABLE-Hinweis nicht.
  • Zusammenführen mehrerer kleiner Dateien für Abfrageergebnisse: Wenn die Ergebnisausgabe mehrere kleine Dateien enthält, kann Hive die kleinen Dateien optional in weniger großen Dateien zusammenführen, um einen Überlauf der HDFS-Metadaten zu vermeiden. Dies wird von Spark SQL nicht unterstützt.