Delen via


Compatibiliteit met Apache Hive

Van toepassing op: vinkje als ja aan 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:
    • SELECTEREN
    • GROUP BY
    • ORDER BY
    • CLUSTER OP
    • SORTEREN OP
  • 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)
  • Door de gebruiker gedefinieerde functies (UDF)
  • Door de gebruiker gedefinieerde aggregatiefuncties (UDAF)
  • Door de gebruiker gedefinieerde serialisatie-indelingen (SerDes)
  • Vensterfuncties
  • Joins
    • JOIN
    • {LINKS|RECHTS|FULL} OUTER JOIN
    • LEFT SEMI JOIN
    • CROSS JOIN
  • Vakbonden
  • Subquery's
    • SELECT col FROM (SELECT a + b AS col from t1) t2
  • Steekproeven
  • Verklaren
  • 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 bucketed tabel gemaakt door Hive
  • Fijnmazige ACID-updates

Esoterische Hive-functies

  • Samenvoegtype
  • Unieke join
  • Kolomstatistieken verzamelen: Spark SQL scant momenteel geen piggybackscans om kolomstatistieken te verzamelen en ondersteunt alleen het vullen van het veld sizeInBytes van 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 de STREAMTABLE 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.