Compatibiliteit met Apache Hive
Van toepassing op: Databricks Runtime
Apache Spark SQL in Azure Databricks is ontworpen om compatibel te zijn met Apache Hive, waaronder metastore-connectiviteit, SerDes en UDF's.
SerDes en UDF's
Hive SerDes en UDF's zijn gebaseerd op Hive 1.2.1.
Metastore-connectiviteit
Zie Externe Apache Hive-metastore (verouderd) voor informatie over het verbinden van Azure Databricks met een extern gehoste Hive-metastore.
Ondersteunde Hive-functies
Spark SQL ondersteunt het merendeel van de Hive-functies, zoals:
- Hive-queryinstructies, waaronder:
- SELECT
- GROUP BY
- ORDER BY
- CLUSTER BY
- SORT BY
- Alle Hive-expressies, waaronder:
- Relationele expressies (
=
,⇔
, ,==
<>
,<
, ,>
,>=
, , , enzovoort<=
) - Rekenkundige expressies (
+
,-
,*
,/
, ,%
enzovoort) - Logische expressies (AND, &&, OR, ||, enzovoort)
- Complexe typeconstructors
- Wiskundige expressies (teken, ln, cos, enzovoort)
- Tekenreeksexpressies (instr, lengte, printf, enzovoort)
- Relationele expressies (
- Door de gebruiker gedefinieerde functies (UDF)
- Door de gebruiker gedefinieerde aggregatiefuncties (UDAF)
- Door de gebruiker gedefinieerde serialisatie-indelingen (SerDes)
- Vensterfuncties
- Joins
- JOIN
- {LINKS|RECHTS|VOLLEDIG} BUITEN JOIN
- LINKER SEMI JOIN
- CROSS-JOIN
- Vakbonden
- Subquery's
- SELECT kolom VAN (SELECT a + b ALS kolom van t1) t2
- Steekproeven
- Uitleggen
- Gepartitioneerde tabellen inclusief dynamische partitieinvoeging
- Weergave
- Overgrote meerderheid van DDL-instructies, waaronder:
- CREATE TABLE
- CREATE TABLE AS SELECT
- ALTER TABLE
- De meeste Hive-gegevenstypen, waaronder:
- TINYINT
- SMALLINT
- INT
- BIGINT
- BOOLEAN
- FLOAT
- DOUBLE
- STRING
- BINARY
- TIMESTAMP
- DATUM
- ARRAY<>
- KAART<>
- STRUCT<>
Niet-ondersteunde Hive-functionaliteit
De volgende secties bevatten een lijst met Hive-functies die niet door Spark SQL worden ondersteund. De meeste van deze functies worden zelden gebruikt in Hive-implementaties.
Belangrijke Hive-functies
- Schrijven naar een gebucketiseerde tabel die door Hive is gemaakt
- Fijnmazige ACID-updates
Esoterische Hive-functies
- Samenvoegtype
- Unieke join
- Kolomstatistieken verzamelen: Spark SQL voert momenteel geen meelifscans uit om kolomstatistieken te verzamelen en ondersteunt alleen het vullen van het veld sizeInBytes in de Hive-metastore.
Hive-invoer- en uitvoerindelingen
- Bestandsindeling voor CLI: Voor resultaten die worden weergegeven naar de CLI, ondersteunt Spark SQL alleen TextOutputFormat
- Hadoop-archief
Hive-optimalisaties
Een handvol Hive-optimalisaties zijn niet opgenomen in Spark. Sommige van deze (zoals indexen) zijn minder belangrijk vanwege het rekenkundige model van Spark SQL in het geheugen.
- Bitmapindexen op blokniveau en virtuele kolommen (gebruikt om indexen te bouwen).
- Bepaal automatisch het aantal reducers voor joins en groupbys: In Spark SQL moet u de mate van parallelle uitvoering na willekeurige volgorde beheren met behulp
SET spark.sql.shuffle.partitions=[num_tasks];
van . - Scheeftrekken van gegevensvlag: Spark SQL volgt de scheve gegevensvlag niet in Hive.
-
STREAMTABLE
hint in join: Spark SQL volgt deSTREAMTABLE
hint niet. - Meerdere kleine bestanden samenvoegen voor queryresultaten: als de resultaatuitvoer meerdere kleine bestanden bevat, kan Hive de kleine bestanden desgewenst samenvoegen in minder grote bestanden om te voorkomen dat de HDFS-metagegevens overlopen. Spark SQL biedt daar geen ondersteuning voor.