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'entreposage de données distribués. Le tableau suivant compare certaines de leurs fonctionnalités de haut niveau :

Fonctionnalité Hive BigQuery
Disponibilité Dépend de la mise en œuvre >= 99,99 % de disponibilité mensuelle
Quotas Dépend de la mise en œuvre Quotas BigQuery
Format accepté Avro, Parquet, ORC, Text Avro, Parquet, ORC, CSV, JSON, Google Drive
Stockage des tables gérées HDFS Stockage BigQuery au format Capacitor
Sources de table externes HDFS, HBase Google Cloud Storage, Google Sheets, Bigtable
Transaction Limitée. ACID au niveau de la partition Limité au niveau de la partition. Accepte les transactions multi-instructions.
API compatibles JDBC, ODBC, Thrift JDBC, ODBC, bibliothèque cliente avec de nombreux langages
Partitionnement Assistance Colonne d'unités de temps, date d'ingestion ou plage d'entiers
Clustering Assistance Assistance
Réplication Dépend de 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 Par lot, en flux continu (limité) Lot, flux
Opérations de données LDD, LMD LDD, LMD, DCL, TCL

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
VALEUR BOOLÉENNE 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 accepte l'écriture de 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 Functions ou Cloud Run à partir de requêtes en 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

À des fins d'autorisation, Hive a introduit l'autorisation basée sur les normes SQL (disponible dans Hive 0.13.0) afin de permettre un contrôle des accès précis. Il utilise le contrôle des accès basé sur les rôles (RBAC) pour gérer l'autorisation pour un grand nombre d'utilisateurs et d'objets de données dans un environnement d'entreprise classique. Ce mécanisme de sécurité est basé sur les identités Hadoop. 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 mettre en œuvre 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 limiter l'accès aux ensembles de données BigQuery. Les tables et les vues sont les ressources enfants des ensembles de données et leurs autorisations sont héritées des ensembles de données. Vous pouvez attribuer une sécurité au niveau des lignes et au niveau des colonnes à des tables individuelles.

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