Apache Hive zu BigQuery migrieren: Übersicht

In diesem Dokument werden die Unterschiede zwischen Apache Hive und BigQuery verglichen und wichtige Aspekte der Migration erläutert. Weitere Informationen zum Abschließen der Migration finden Sie in der Migrationsanleitung für Apache Hive.

Verwenden Sie die Batch-SQL-Übersetzung, um Ihre SQL-Skripts im Bulk zu migrieren, oder die interaktive SQL-Übersetzung, um Ad-hoc-Abfragen zu übersetzen. Apache HiveQL wird von beiden SQL-Übersetzungsdiensten vollständig unterstützt.

Features

Hive und BigQuery sind beide verteilte Systeme für Data Warehouses. In der folgenden Tabelle werden einige ihrer wichtigsten Funktionen verglichen:

Feature Hive BigQuery
Verfügbarkeit Abhängig von der Implementierung >= 99,99 % monatliche Betriebszeit
Kontingente Abhängig von der Implementierung BigQuery-Kontingente
Unterstütztes Format Avro, Parquet, ORC, Text Avro, Parquet, ORC, CSV, JSON, Google Drive
Verwalteter Tabellenspeicher HDFS BigQuery-Speicher im Capacitor-Format
Externe Tabellenquellen HDFS, HBase Google Cloud Storage, Google Tabellen, Bigtable
Transaktion Begrenzt. ACID-Partition Auf Partitionsebene begrenzt. Unterstützt Transaktionen mit mehreren Anweisungen.
API-Support JDBC, ODBC, Thrift JDBC, ODBC, Clientbibliothek mit vielen Sprachen
Partitionierung Support Zeiteinheitsspalte, Aufnahmezeit oder Ganzzahlbereich
Clustering Support Support
Replikation Hängt vom HDFS ab. Keine Rechenzentrumsübergreifende Replikation Zuverlässige Rechenzentrumsübergreifende Replikation, die von Google verwaltet wird
UDF Alle Sprachen SQL oder JavaScript
Daten laden Batch, Streaming (eingeschränkt) Batch, Streaming
Datenvorgänge DDL, DML DDL, DML, DCL, TCL

Datentypen

Apache Hive und BigQuery haben unterschiedliche Datentypsysteme. In den meisten Fällen können Datentypen in Hive BigQuery-Datentypen zugeordnet werden, mit einigen Ausnahmen wie MAP und UNION. Apache Hive führt mehr implizite Typumwandlungen durch als BigQuery. Daher fügt der Batch-SQL-Übersetzer viele explizite Umwandlungen ein.

Hive BigQuery
TINYINT INT64
SMALLINT INT64
INT INT64
BIGINT INT64
DECIMAL NUMERIC
FLOAT FLOAT64
DOUBLE FLOAT64
BOOLEAN BOOL
STRING STRING
VARCHAR STRING
CHAR STRING
BINARY BYTES
DATE DATE
- DATETIME
- TIME
TIMESTAMP DATETIME/TIMESTAMP
INTERVAL -
ARRAY ARRAY
STRUCT STRUCT
MAPS STRUCT mit Schlüsselwerten (REPEAT-Feld)
UNION STRUCT mit verschiedenen Typen
- GEOGRAPHY
- JSON

Benutzerdefinierte Funktionen

Apache Hive unterstützt das Schreiben benutzerdefinierter Funktionen (UDFs) in Java. Sie können UDFs in Hive laden, um sie in regulären Abfragen zu verwenden. BigQuery-UDFs müssen in GoogleSQL oder JavaScript geschrieben sein. Die Konvertierung der Hive-UDFs in SQL-UDFs wird empfohlen, da SQL-UDFs eine bessere Leistung erzielen. Wenn Sie JavaScript verwenden müssen, lesen Sie Best Practices für JavaScript-UDFs. Für andere Sprachen unterstützt BigQuery Remote-Funktionen, mit denen Sie Ihre Funktionen in Cloud Functions oder Cloud Run aus GoogleSQL-Abfragen aufrufen können.

BigQuery unterstützt keine benutzerdefinierten Aggregationsfunktionen (UDAFs).

Sicherheit

Hive und BigQuery haben unterschiedliche Sicherheitsmodelle, die in den folgenden Abschnitten beschrieben werden:

Hive-Zugriffssteuerung

Zu Autorisierungszwecken hat Hive eine SQL-Standardbasierte Autorisierung (seit Hive 0.13.0) eingeführt, um eine detaillierte Zugriffssteuerung zu ermöglichen. Es verwendet die rollenbasierte Zugriffssteuerung (RBAC), um die Autorisierung für eine große Anzahl von Nutzern und Datenobjekten in einer typischen Unternehmensumgebung zu verwalten. Dieser Sicherheitsmechanismus basiert auf den Hadoop-Identitäten. Hadoop benötigt Kerberos, um Identitäten zu authentifizieren.

Mit Apache Sentry und Apache Ranger schützen

Apache Ranger und Apache Sentry sind Apache-Projekte, die von Hive bereitgestellte Plug-ins verwenden, um die Autorisierung zu implementieren. Durch die Konfiguration von Hive-RBAC werden die Daten nicht vollständig gesichert, da Hive-Daten normalerweise in HDFS gespeichert werden, wo ein Nutzer direkt Daten erreichen kann, die er nicht sehen sollte. Ranger und Sentry erzwingen auch Daten auf HDFS mit POSIX-ACLs, die aus den RBAC-Einstellungen von Hive übersetzt wurden.

BigQuery-Sicherheit

BigQuery verwendet Identitäts- und Zugriffsverwaltung, um den Zugriff auf Daten in einem Projekt zu steuern. Sie können den Zugriff auf BigQuery-Datasets einschränken. Tabellen und Ansichten sind untergeordnete Ressourcen von Datasets. Ihre Berechtigungen werden von Datasets übernommen. Sie können einzelnen Tabellen die Sicherheit auf Zeilenebene und Spaltenebene zuweisen.

Sie können den Zugriff auch mithilfe von autorisierten Ansichten und autorisierten Datasets einschränken.

BigQuery verschlüsselt Daten standardmäßig. Zur Verwaltung Ihrer eigenen Verschlüsselungsschlüssel können Sie Cloud KMS mit BigQuery verwenden.

Nächste Schritte