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
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.