Kompatibilitet med Apache Hive
Gäller för: Databricks Runtime
Apache Spark SQL i Azure Databricks är utformat för att vara kompatibelt med Apache Hive, inklusive metaarkivanslutning, serder och UDF:er.
Serdes och UDF:er
Hive SerDes och UDF:er baseras på Hive 1.2.1.
Anslutning till metaarkiv
Se Externt Apache Hive-metaarkiv (äldre) för information om hur du ansluter Azure Databricks till ett externt värdbaserat Hive-metaarkiv.
Hive-funktioner som stöds
Spark SQL stöder de allra flesta Hive-funktioner, till exempel:
- Hive-frågeinstruktioner, inklusive:
- SELECT
- GROUP BY
- ORDER BY
- KLUSTER EFTER
- SORTERA EFTER
- Alla Hive-uttryck, inklusive:
- Relationsuttryck (
=
, ,⇔
==
,<>
,<
,>
,>=
, ,<=
osv.) - Aritmetiska uttryck (
+
,-
,*
,/
,%
osv.) - Logiska uttryck (AND, &&, OR, ||osv.)
- Komplexa typkonstruktorer
- Matematiska uttryck (tecken, ln, cos osv.)
- Stränguttryck (instr, längd, utskrift osv.)
- Relationsuttryck (
- Användardefinierade funktioner (UDF)
- Användardefinierade sammansättningsfunktioner (UDAF)
- Användardefinierade serialiseringsformat (SerDes)
- Fönsterfunktioner
- Går
- JOIN
- {VÄNSTER|HÖGER|FULL} YTTRE KOPPLING
- VÄNSTER HALVKOPPLING
- KORSKOPPLING
- Fackföreningar
- Underfrågor
- SELECT col FROM ( SELECT a + b AS col from t1) t2
- Sampling
- Förklara
- Partitionerade tabeller inklusive dynamisk partitionsinfogning
- Visa
- De flesta DDL-instruktioner, inklusive:
- CREATE TABLE
- CREATE TABLE AS SELECT
- ALTER TABLE
- De flesta Hive-datatyper, inklusive:
- TINYINT
- SMALLINT
- INT
- BIGINT
- BOOLESK
- FLYTA
- DOUBLE
- STRÄNG
- BINARY
- TIMESTAMP
- DATUM
- SAMLING<>
- KARTA<>
- STRUCT<>
Hive-funktioner som inte stöds
Följande avsnitt innehåller en lista över Hive-funktioner som Spark SQL inte stöder. De flesta av dessa funktioner används sällan i Hive-distributioner.
Viktiga Hive-funktioner
- Skriva till bucketad tabell som skapats av Hive
- ACID-detaljerade uppdateringar
Esoteriska Hive-funktioner
- Union-typ
- Unik koppling
- Insamling av kolumnstatistik: Spark SQL genomsöker inte piggyback för att samla in kolumnstatistik för tillfället och stöder bara att fältet sizeInBytes i Hive-metaarkivet fylls i
Hive-indata- och utdataformat
- Filformat för CLI: För resultat som visas tillbaka till CLI stöder Spark SQL endast TextOutputFormat
- Hadoop-arkiv
Hive-optimeringar
En handfull Hive-optimeringar ingår inte i Spark. Vissa av dessa (till exempel index) är mindre viktiga på grund av Spark SQL:s minnesintern beräkningsmodell.
- Blocknivå bitmappsindex och virtuella kolumner (används för att skapa index).
- Bestäm automatiskt antalet reducers för kopplingar och groupbys: I Spark SQL måste du kontrollera graden av parallellitet efter shuffle med hjälp av
SET spark.sql.shuffle.partitions=[num_tasks];
. - Skeva dataflagga: Spark SQL följer inte flaggan för skev data i Hive.
STREAMTABLE
tips i anslutning: Spark SQL följer inte tipsetSTREAMTABLE
.- Slå samman flera små filer för frågeresultat: om resultatet innehåller flera små filer kan Hive eventuellt sammanfoga de små filerna till färre stora filer för att undvika att HDFS-metadata spills över. Spark SQL stöder inte det.