Migration d'Apache Hive vers BigQuery : Présentation

Ce document compare les différences entre Apache Hive et BigQuery, et aborde les points clés à prendre en compte lors de la migration. Pour en savoir plus sur la migration, consultez le guide de migration d'Apache Hive.

Vous pouvez également utiliser la traduction SQL par lot pour migrer vos scripts SQL de façon groupée, ou la traduction SQL interactive pour traduire des requêtes ad hoc. Apache HiveQL est entièrement compatible avec les deux services de traduction SQL.

Fonctionnalités

Hive et BigQuery sont tous deux des systèmes d'entrepôt de données distribués. Le tableau suivant compare certaines de leurs fonctionnalités de haut niveau :

Fonctionnalité Hive BigQuery
Disponibilité Selon l'implémentation >= 99,99 % de disponibilité mensuelle
Quotas Selon l'implémentation Quotas BigQuery
Format accepté Avro, Parquet, ORC, Text Avro, Parquet, ORC, CSV, JSON, Google Drive
Stockage de table géré HDFS Stockage BigQuery au format Capacitor
Sources de tables externes HDFS, HBase Google Cloud Storage, Google Sheets, Bigtable
Transaction Limitée. ACID au niveau de la partition Limitée au niveau de la partition. Prise en charge des transactions multi-instructions.
API compatibles JDBC, ODBC, Thrift JDBC, ODBC, bibliothèque cliente compatible avec de nombreux langages
Partitionnement Assistance Colonne d'unité de temps, heure d'ingestion ou plage d'entiers
Clustering Pleinement pris en charge Pleinement pris en charge
Réplication Selon les sources HDFS. Pas de réplication entre les centres de données Réplication fiable entre les centres de données gérés par Google
UDF Toutes les langues SQL ou JavaScript
Charger les données Traitement par lots, traitement en flux continu (limité) Lot, flux
Opérations de données LDD, LMD LDD, LMD, LCD, LCT

Types de données

Apache Hive et BigQuery disposent de systèmes de types de données différents. Dans la plupart des cas, les types de données dans Hive peuvent être mappés sur des types de données BigQuery, à quelques exceptions près, telles que MAP et UNION. Apache Hive effectue plus de diffusions de types implicites que BigQuery. Par conséquent, la traduction SQL par lot insère de nombreuses diffusions explicites.

Hive BigQuery
TINYINT INT64
SMALLINT INT64
INT INT64
BIGINT INT64
DÉCIMAL NUMERIC
FLOAT FLOAT64
DOUBLE FLOAT64
BOOLÉEN BOOL
STRING STRING
VARCHAR STRING
CHAR STRING
BINARY BYTES
DATE DATE
- DATETIME
- TIME
TIMESTAMP DATETIME/TIMESTAMP
INTERVAL -
ARRAY ARRAY
STRUCT STRUCT
MAPS STRUCT avec clés-valeurs (champ REPEAT)
UNION STRUCT avec différents types
- GEOGRAPHY
- JSON

Fonctions définies par l'utilisateur

Apache Hive permet d'écrire des fonctions définies par l'utilisateur (UDF) en Java. Vous pouvez charger des fonctions définies par l'utilisateur dans Hive et les utiliser dans les requêtes standards. Les fonctions définies par l'utilisateur de BigQuery doivent être écrites en GoogleSQL ou JavaScript. La conversion des fonctions définies par l'utilisateur Hive en fonctions définies par l'utilisateur SQL est recommandée pour un fonctionnement optimal. Si vous devez utiliser JavaScript, consultez les bonnes pratiques pour les fonctions définies par l'utilisateur JavaScript. Pour les autres langages, BigQuery est compatible avec les fonctions distantes vous permettant d'appeler vos fonctions dans Cloud Run Functions ou Cloud Run à partir de requêtes créées en langage GoogleSQL.

BigQuery n'est pas compatible avec les fonctions d'agrégation définies par l'utilisateur (UDAF).

Sécurité

Hive et BigQuery présentent des modèles de sécurité différents, décrits dans les sections suivantes :

Contrôle des accès Hive

Dans le cadre du processus d'autorisation, Hive a introduit l'autorisation basée sur les standards SQL (disponible dans Hive 0.13.0) afin de permettre un contrôle des accès précis. Celle-ci exploite le contrôle des accès basé sur les rôles (RBAC) pour gérer l'autorisation d'un grand nombre d'utilisateurs et d'objets de données, dans un environnement d'entreprise typique. Ce mécanisme de sécurité est basé sur les identités Hadoop, et Hadoop s'appuie sur Kerberos pour authentifier les identités.

Sécuriser avec Apache Sentry et Apache Ranger

Apache Ranger et Apache Sentry sont des projets Apache qui utilisent des plug-ins fournis par Hive pour implémenter l'autorisation. La configuration du contrôle des accès basé sur les rôles Hive ne permet pas de sécuriser entièrement les données, car celles-ci sont généralement stockées sur le système HDFS, où un utilisateur peut accéder directement aux données qu'il ne devrait pas voir. Ranger et Sentry appliquent également les données sur le système HDFS avec des LCA POSIX traduites à partir des paramètres du contrôle des accès basé sur les rôles Hive.

Sécurité BigQuery

BigQuery utilise Identity and Access Management pour contrôler l'accès aux données d'un projet. Vous pouvez restreindre l'accès aux ensembles de données BigQuery. Les tables et les vues sont des ressources enfants des ensembles de données, et leurs autorisations sont héritées des ensembles de données. Vous pouvez attribuer individuellement à chaque table une sécurité au niveau des lignes et au niveau des colonnes.

Vous pouvez également restreindre l'accès à l'aide de vues autorisées et d'ensembles de données autorisés.

BigQuery chiffre les données par défaut. Pour gérer vos propres clés de chiffrement, vous pouvez utiliser Cloud KMS avec BigQuery.

Étapes suivantes