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
Suivez les instructions détaillées pour migrer le schéma et les données depuis Apache Hive,
Consultez le guide de traduction SQL d'Apache Hive.