Guide de traduction SQL Apache Hive
Ce document décrit les similitudes et les différences de syntaxe SQL entre Apache Hive et BigQuery pour vous aider à planifier votre migration. Pour migrer vos scripts SQL de façon groupée, utilisez la traduction SQL par lot. Pour traduire des requêtes ad hoc, utilisez la traduction SQL interactive.
Dans certains cas, il n'existe pas de mappage direct entre un élément SQL dans Hive et BigQuery. Cependant, dans la plupart des cas, BigQuery propose un autre élément à Hive pour vous aider à obtenir les mêmes fonctionnalités, comme indiqué dans les exemples de ce document.
Ce document est destiné aux architectes d'entreprise, aux administrateurs de bases de données, aux développeurs d'applications et aux spécialistes de la sécurité informatique. Il part du principe que vous connaissez bien Hive.
Types de données
Hive et BigQuery disposent de systèmes de types de données différents. Dans la plupart des cas, vous pouvez mapper les types de données dans Hive vers les types de données BigQuery, à quelques exceptions près, telles que MAP
et UNION
. Hive accepte le casting de types plus implicite 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 |
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 avec des valeurs de clés (champ REPEAT ) |
UNION |
STRUCT avec différents types |
- | GEOGRAPHY |
- | JSON |
Syntaxe des requêtes
Cette section traite des différences de syntaxe des requêtes entre Hive et BigQuery.
Instruction SELECT
La plupart des instructions SELECT
Hive sont compatibles avec BigQuery. Le tableau suivant contient une liste de différences mineures :
Case | Hive | BigQuery |
---|---|---|
Sous-requête |
|
|
Filtrage de colonne |
|
|
Éclater un tableau |
|
|
Clause FROM
La clause FROM
d'une requête répertorie les références de table à partir desquelles les données sont sélectionnées. Dans Hive, les références de tables possibles incluent les tables, les vues et les sous-requêtes. BigQuery accepte également toutes ces références de table.
Vous pouvez référencer des tables BigQuery dans la clause FROM
à l'aide des éléments suivants :
[project_id].[dataset_id].[table_name]
[dataset_id].[table_name]
[table_name]
BigQuery accepte également d'autres références de table :
- Versions historiques de la définition de table et des lignes, en utilisant
FOR SYSTEM_TIME AS OF
- Chemins d'accès de champ, ou tout chemin menant à un champ dans un type de données (par exemple, une
STRUCT
) - Tableaux aplatis.
Opérateurs de comparaison
Le tableau suivant fournit des détails sur la conversion des opérateurs de Hive vers BigQuery :
Fonction ou opérateur | Hive | BigQuery |
---|---|---|
- Moins unaire * Multiplication / Division + Addition - Soustraction
|
Tous les types de nombres | Tous les types de nombres. Pour éviter les erreurs lors de l'opération de division, envisagez d'utiliser |
~ Opérateur NOT (PAS) au niveau du bit | Opérateur OR (OU) bit à bit & Opérateur AND (ET) au niveau du bit ^ Opérateur XOR (OU exclusif) au niveau du bit
|
Type de données "Booléen" | Type de données "Booléen". |
Décalage à gauche |
|
|
Décalage à droite |
|
|
Module (reste) |
X % Y Tous les types de nombres |
MOD(X, Y) |
Division d'entiers | A DIV B et A/B pour une précision détaillée |
Tous les types de nombres. Remarque : Pour éviter les erreurs lors de l'opération de division, envisagez d'utiliser |
Négation unaire | ! , NOT |
NOT |
Types compatibles avec les comparaisons d'égalité | Tous les types primitifs | Tous les types comparables et STRUCT .
|
a <=> b |
Non compatible. Traduisez les éléments suivants :
|
|
a <> b |
Non compatible. Traduisez les éléments suivants :
|
|
Opérateurs relationnels ( =, ==, !=, <, >, >= ) |
Tous les types primitifs | Tous les types comparables. |
Comparaison de chaînes | RLIKE , REGEXP
|
Fonction intégrée REGEXP_CONTAINS . Utilise la syntaxe d'expression régulière BigQuery pour les fonctions de chaîne pour les modèles d'expression régulière. |
[NOT] LIKE, [NOT] BETWEEN, IS [NOT] NULL |
A [NOT] BETWEEN B AND C, A IS [NOT] (TRUE|FALSE), A [NOT] LIKE B
|
Identique à Hive. BigQuery est également compatible avec l'opérateur IN . |
Conditions JOIN
Hive et BigQuery sont compatibles avec les types de jointures suivants :
[INNER] JOIN
LEFT [OUTER] JOIN
RIGHT [OUTER] JOIN
FULL [OUTER] JOIN
CROSS JOIN
et la jointure croisée séparée par des virgules implicite équivalente.
Pour en savoir plus, consultez les sections Opérations de jointure et Jointures Hive.
Casting et conversion des types de données
Le tableau suivant fournit des détails sur la conversion des fonctions de Hive vers BigQuery :
Fonction ou opérateur | Hive | BigQuery |
---|---|---|
Casting des types | Lorsqu'un casting échoue, la valeur "NULL" est renvoyée. | Syntaxe identique à Hive. Pour en savoir plus sur les règles de conversion de type BigQuery, consultez la page Règles de conversion. Si le casting échoue, une erreur s'affiche. Pour obtenir le même comportement que Hive, utilisez plutôt |
Appels de fonctions SAFE |
Si vous ajoutez le préfixe SAFE aux appels de fonction, la fonction renvoie NULL au lieu de signaler l'échec. Par exemple, SAFE.SUBSTR('foo', 0, -2) AS safe_output; renvoie NULL .Remarque : Lorsque vous castez des données en toute sécurité sans erreur, utilisez |
Types de conversion implicites
Lors de la migration vers BigQuery, vous devez convertir la plupart de vos conversions implicites Hive en conversions explicites BigQuery, à l'exception des types de données suivants que BigQuery convertit implicitement.
Depuis le type BigQuery | Vers le type BigQuery |
---|---|
INT64 |
FLOAT64 , NUMERIC et BIGNUMERIC |
BIGNUMERIC |
FLOAT64 |
NUMERIC |
BIGNUMERIC , FLOAT64 |
BigQuery effectue également des conversions implicites pour les littéraux suivants :
Depuis le type BigQuery | Vers le type BigQuery |
---|---|
STRING littéral, par exemple "2008-12-25" . |
DATE |
STRING littéral, par exemple "2008-12-25 15:30:00" . |
TIMESTAMP |
STRING littéral, par exemple "2008-12-25T07:30:00" . |
DATETIME |
STRING littéral, par exemple "15:30:00" . |
TIME |
Types de conversions explicites
Si vous souhaitez convertir des types de données Hive que BigQuery ne convertit pas implicitement, utilisez la fonction CAST(expression AS type)
de BigQuery ou l'une des fonctions de conversion DATE
et TIMESTAMP
.
Fonctions
Cette section couvre les fonctions courantes utilisées dans Hive et BigQuery.
Fonctions d'agrégation
Le tableau suivant présente les mappages des fonctions Hive d'agrégation, d'agrégation statistique et d'agrégation approximative courantes avec leurs équivalents dans BigQuery :
Hive | BigQuery |
---|---|
count(DISTINCT expr[, expr...])
|
count(DISTINCT expr[, expr...])
|
percentile_approx(DOUBLE col, array(p1 [, p2]...) [, B]) WITHIN GROUP (ORDER BY expression)
|
APPROX_QUANTILES(expression, 100)[OFFSET(CAST(TRUNC(percentile * 100) as INT64))] BigQuery n'est pas compatible avec les autres arguments définis par Hive. |
AVG
|
AVG
|
X | Y
|
BIT_OR / X | Y
|
X ^ Y
|
BIT_XOR / X ^ Y
|
X & Y
|
BIT_AND / X & Y
|
COUNT
|
COUNT
|
COLLECT_SET(col), \
COLLECT_LIST(col )
|
ARRAY_AGG(col)
|
COUNT
|
COUNT
|
MAX
|
MAX
|
MIN
|
MIN
|
REGR_AVGX
|
AVG(
|
REGR_AVGY
|
AVG(
|
REGR_COUNT
|
SUM(
|
REGR_INTERCEPT
|
AVG(dep_var_expr)
|
REGR_R2
|
(COUNT(dep_var_expr) *
|
REGR_SLOPE
|
COVAR_SAMP(ind_var_expr,
|
REGR_SXX
|
SUM(POWER(ind_var_expr, 2)) - COUNT(ind_var_expr) * POWER(AVG(ind_var_expr),2)
|
REGR_SXY
|
SUM(ind_var_expr*dep_var_expr) - COUNT(ind_var_expr) * AVG(ind) * AVG(dep_var_expr)
|
REGR_SYY
|
SUM(POWER(dep_var_expr, 2)) - COUNT(dep_var_expr) * POWER(AVG(dep_var_expr),2)
|
ROLLUP
|
ROLLUP
|
STDDEV_POP
|
STDDEV_POP
|
STDDEV_SAMP
|
STDDEV_SAMP, STDDEV
|
SUM
|
SUM
|
VAR_POP
|
VAR_POP
|
VAR_SAMP
|
VAR_SAMP, VARIANCE
|
CONCAT_WS
|
STRING_AGG
|
Fonctions analytiques
Le tableau suivant présente les mappages des fonctions d'analyse Hive courantes avec leurs équivalents dans BigQuery :
Hive | BigQuery |
---|---|
AVG
|
AVG
|
COUNT
|
COUNT
|
COVAR_POP
|
COVAR_POP
|
COVAR_SAMP
|
COVAR_SAMP
|
CUME_DIST
|
CUME_DIST
|
DENSE_RANK
|
DENSE_RANK
|
FIRST_VALUE
|
FIRST_VALUE
|
LAST_VALUE
|
LAST_VALUE
|
LAG
|
LAG
|
LEAD
|
LEAD
|
COLLECT_LIST, \
COLLECT_SET
|
ARRAY_AGG
ARRAY_CONCAT_AGG
|
MAX
|
MAX
|
MIN
|
MIN
|
NTILE
|
NTILE(constant_integer_expression)
|
PERCENT_RANK
|
PERCENT_RANK
|
RANK ()
|
RANK
|
ROW_NUMBER
|
ROW_NUMBER
|
STDDEV_POP
|
STDDEV_POP
|
STDDEV_SAMP
|
STDDEV_SAMP, STDDEV
|
SUM
|
SUM
|
VAR_POP
|
VAR_POP
|
VAR_SAMP
|
VAR_SAMP, VARIANCE
|
VARIANCE
|
VARIANCE ()
|
WIDTH_BUCKET
|
Une fonction définie par l'utilisateur (UDF) peut être utilisée. |
Fonctions de date et heure
Le tableau suivant présente les mappages des fonctions de date et heure courantes de Hive et de leurs équivalents dans BigQuery :
DATE_ADD
|
DATE_ADD(date_expression, INTERVAL int64_expression date_part)
|
DATE_SUB
|
DATE_SUB(date_expression, INTERVAL int64_expression date_part)
|
CURRENT_DATE
|
CURRENT_DATE
|
CURRENT_TIME
|
CURRENT_TIME
|
CURRENT_TIMESTAMP
|
CURRENT_DATETIME est recommandé, car cette valeur est sans fuseau horaire et synonyme de CURRENT_TIMESTAMP \ CURRENT_TIMESTAMP dans Hive.
|
EXTRACT(field FROM source)
|
EXTRACT(part FROM datetime_expression)
|
LAST_DAY
|
DATE_SUB( DATE_TRUNC( DATE_ADD(
|
MONTHS_BETWEEN
|
DATE_DIFF(date_expression, date_expression, MONTH)
|
NEXT_DAY
|
DATE_ADD(
|
TO_DATE
|
PARSE_DATE
|
FROM_UNIXTIME
|
UNIX_SECONDS
|
FROM_UNIXTIMESTAMP
|
FORMAT_TIMESTAMP
|
YEAR \
QUARTER \
MONTH \
HOUR \
MINUTE \
SECOND \
WEEKOFYEAR
|
EXTRACT
|
DATEDIFF
|
DATE_DIFF
|
BigQuery propose les fonctions de date et heure supplémentaires suivantes :
Fonctions de chaîne
Le tableau suivant présente les mappages entre les fonctions de chaîne Hive et leurs équivalents dans BigQuery :
Hive | BigQuery |
---|---|
ASCII
|
TO_CODE_POINTS(string_expr)[OFFSET(0)]
|
HEX
|
TO_HEX
|
LENGTH
|
CHAR_LENGTH
|
LENGTH
|
CHARACTER_LENGTH
|
CHR
|
CODE_POINTS_TO_STRING
|
CONCAT
|
CONCAT
|
LOWER
|
LOWER
|
LPAD
|
LPAD
|
LTRIM
|
LTRIM
|
REGEXP_EXTRACT
|
REGEXP_EXTRACT
|
REGEXP_REPLACE
|
REGEXP_REPLACE
|
REPLACE
|
REPLACE
|
REVERSE
|
REVERSE
|
RPAD
|
RPAD
|
RTRIM
|
RTRIM
|
SOUNDEX
|
SOUNDEX
|
SPLIT
|
SPLIT(instring, delimiter)[ORDINAL(tokennum)]
|
SUBSTR, \
SUBSTRING
|
SUBSTR
|
TRANSLATE
|
TRANSLATE
|
LTRIM
|
LTRIM
|
RTRIM
|
RTRIM
|
TRIM
|
TRIM
|
UPPER
|
UPPER
|
BigQuery propose les fonctions de chaîne supplémentaires suivantes :
Fonctions mathématiques
Le tableau suivant présente les mappages entre les fonctions mathématiques Hive et leurs équivalents dans BigQuery.
Hive | BigQuery |
---|---|
ABS
|
ABS
|
ACOS
|
ACOS
|
ASIN
|
ASIN
|
ATAN
|
ATAN
|
CEIL
|
CEIL
|
CEILING
|
CEILING
|
COS
|
COS
|
FLOOR
|
FLOOR
|
GREATEST
|
GREATEST
|
LEAST
|
LEAST
|
LN
|
LN
|
LNNVL
|
Utilisez cette option avec ISNULL .
|
LOG
|
LOG
|
MOD (% operator)
|
MOD
|
POWER
|
POWER, POW
|
RAND
|
RAND
|
ROUND
|
ROUND
|
SIGN
|
SIGN
|
SIN
|
SIN
|
SQRT
|
SQRT
|
HASH
|
FARM_FINGERPRINT, MD5, SHA1, SHA256, SHA512
|
STDDEV_POP
|
STDDEV_POP
|
STDDEV_SAMP
|
STDDEV_SAMP
|
TAN
|
TAN
|
TRUNC
|
TRUNC
|
NVL
|
IFNULL(expr, 0), COALESCE(exp, 0)
|
BigQuery propose les fonctions mathématiques supplémentaires suivantes :
Fonctions logiques et conditionnelles
Le tableau suivant présente les mappages des fonctions logiques et conditionnelles Hive et de leurs équivalents dans BigQuery :
Hive | BigQuery |
---|---|
CASE
|
CASE
|
COALESCE
|
COALESCE
|
NVL
|
IFNULL(expr, 0), COALESCE(exp, 0)
|
NULLIF
|
NULLIF
|
IF
|
IF(expr, true_result, else_result)
|
ISNULL
|
IS NULL
|
ISNOTNULL
|
IS NOT NULL
|
NULLIF
|
NULLIF
|
Fonctions définies par l'utilisateur et fonctions d'agrégation définies par l'utilisateur
BigQuery est compatible avec les UDF, mais pas avec les fonctions d'agrégation définies par l'utilisateur (UDAF).
Syntaxe LMD
Cette section traite des différences de syntaxe du langage de manipulation de données (LMD) entre Hive et BigQuery.
Instruction INSERT
La plupart des instructions INSERT
Hive sont compatibles avec BigQuery. Le tableau suivant présente les exceptions :
Hive | BigQuery |
---|---|
INSERT INTO TABLE tablename [PARTITION (partcol1[=val1], partcol2[=val2] ...)] VALUES values_row [, values_row ...]
|
INSERT INTO table (...) VALUES (...);
Remarque : Dans BigQuery, l'omission des noms de colonnes dans l'instruction |
INSERT OVERWRITE [LOCAL] DIRECTORY directory1
|
BigQuery n'est pas compatible avec les opérations d'insertion et d'écrasement.
Cette syntaxe Hive peut être migrée vers les instructions TRUNCATE et INSERT .
|
BigQuery impose des quotas LMD qui limitent le nombre d'instructions LMD que vous pouvez exécuter quotidiennement. Pour utiliser au mieux votre quota, envisagez les approches suivantes :
Combinez plusieurs lignes en une seule instruction
INSERT
au lieu d'avoir une ligne pour chaque opérationINSERT
.Combinez plusieurs instructions LMD (y compris
INSERT
) à l'aide d'une instructionMERGE
.Utilisez
CREATE TABLE ... AS SELECT
pour créer et remplir des tables.
Instruction UPDATE
La plupart des instructions UPDATE
Hive sont compatibles avec BigQuery. Le tableau suivant présente les exceptions :
Hive | BigQuery |
---|---|
UPDATE tablename SET column = value [, column = value ...] [WHERE expression]
|
UPDATE table
Remarque : Toutes les instructions |
Instructions DELETE
et TRUNCATE
Vous pouvez utiliser des instructions DELETE
ou TRUNCATE
pour supprimer des lignes d'une table sans que cela n'affecte son schéma ou ses index.
Dans BigQuery, l'instruction DELETE
doit comporter une clause WHERE
.
Pour en savoir plus sur DELETE
dans BigQuery, consultez les exemples DELETE
.
Hive | BigQuery |
---|---|
DELETE FROM tablename [WHERE expression]
|
DELETE FROM table_name
WHERE TRUE
Les instructions BigQuery |
TRUNCATE [TABLE] table_name [PARTITION partition_spec];
|
TRUNCATE TABLE [[project_name.]dataset_name.]table_name
|
Instruction MERGE
L'instruction MERGE
peut combiner les opérations INSERT
, UPDATE
et DELETE
en une seule instruction upsert et effectuer les opérations. L'opération MERGE
doit correspondre à une ligne source au maximum pour chaque ligne cible.
Hive | BigQuery |
---|---|
MERGE INTO
ON
|
MERGE target
USING source
Remarque : Vous devez répertorier toutes les colonnes à mettre à jour. |
Instruction ALTER
Le tableau suivant fournit des détails sur la conversion des instructions CREATE VIEW
de Hive vers BigQuery :
Fonction | Hive | BigQuery |
---|---|---|
Rename table
|
ALTER TABLE table_name RENAME TO new_table_name;
|
Non compatible. Pour contourner ce problème, utilisez un job de copie portant le nom que vous souhaitez utiliser comme table de destination, puis supprimez l'ancien.
|
Table properties
|
ALTER TABLE table_name SET TBLPROPERTIES table_properties;
|
{ALTER TABLE | ALTER TABLE IF EXISTS}
|
SerDe properties (Serialize and deserialize)
|
ALTER TABLE table_name [PARTITION partition_spec] SET SERDE serde_class_name [WITH SERDEPROPERTIES serde_properties];
|
La sérialisation et la désérialisation sont gérées par le service BigQuery et ne peuvent pas être configurées par l'utilisateur.
Pour savoir comment autoriser BigQuery à lire des données à partir de fichiers CSV, JSON, AVRO, PARQUET ou ORC, consultez la page Créer des tables externes Cloud Storage. Compatible avec les formats d'exportation CSV, JSON, AVRO et PARQUET. Pour en savoir plus, consultez la page Formats d'exportation et types de compression. |
Table storage properties
|
ALTER TABLE table_name CLUSTERED BY (col_name, col_name, ...) [SORTED BY (col_name, ...)]
INTO num_buckets BUCKETS;
|
Non compatible avec les instructions ALTER .
|
Skewed table
|
Skewed:
ALTER TABLE table_name SKEWED BY (col_name1, col_name2, ...)
ON ([(col_name1_value, col_name2_value, ...) [, (col_name1_value, col_name2_value), ...]
|
Le service d'équilibrage des requêtes pour les performances est géré par le service BigQuery et n'est pas configurable. |
Table constraints
|
ALTER TABLE table_name ADD CONSTRAINT constraint_name PRIMARY KEY (column, ...) DISABLE NOVALIDATE;
ALTER TABLE table_name ADD CONSTRAINT constraint_name FOREIGN KEY (column, ...) REFERENCES table_name(column, ...) DISABLE NOVALIDATE RELY;
|
ALTER TABLE [[project_name.]dataset_name.]table_name ADD [CONSTRAINT [IF NOT EXISTS] [constraint_name]] constraint NOT ENFORCED; ALTER TABLE [[project_name.]dataset_name.]table_name ADD PRIMARY KEY(column_list) NOT ENFORCED;
Pour en savoir plus, consultez la section Instruction |
Add partition
|
ALTER TABLE table_name ADD [IF NOT EXISTS] PARTITION partition_spec [LOCATION 'location'][, PARTITION partition_spec [LOCATION 'location'], ...];
|
Non compatible. Des partitions supplémentaires sont ajoutées si nécessaire lorsque les données comportant de nouvelles valeurs dans les colonnes de partition sont chargées. Pour en savoir plus, consultez la page Gérer des tables partitionnées. |
Rename partition
|
ALTER TABLE table_name PARTITION partition_spec RENAME TO PARTITION partition_spec;
|
Non compatible. |
Exchange partition
|
-- Move partition from table_name_1 to table_name_2
|
Non compatible. |
Recover partition
|
MSCK [REPAIR] TABLE table_name [ADD/DROP/SYNC PARTITIONS];
|
Non compatible. |
Drop partition
|
ALTER TABLE table_name DROP [IF EXISTS] PARTITION partition_spec[, PARTITION partition_spec, ...]
[IGNORE PROTECTION] [PURGE];
|
Compatible avec les méthodes suivantes :
Pour en savoir plus, consultez la section Supprimer une partition. |
(Un)Archive partition
|
ALTER TABLE table_name ARCHIVE PARTITION partition_spec;
ALTER TABLE table_name UNARCHIVE PARTITION partition_spec;
|
Non compatible. |
Table and partition file format
|
ALTER TABLE table_name [PARTITION partition_spec] SET FILEFORMAT file_format;
|
Non compatible. |
Table and partition location
|
ALTER TABLE table_name [PARTITION partition_spec] SET LOCATION "new location";
|
Non compatible. |
Table and partition touch
|
ALTER TABLE table_name TOUCH [PARTITION partition_spec];
|
Non compatible. |
Table and partition protection
|
ALTER TABLE table_name [PARTITION partition_spec] ENABLE|DISABLE NO_DROP [CASCADE];
|
Non compatible. |
Table and partition compact
|
ALTER TABLE table_name [PARTITION (partition_key = 'partition_value' [, ...])]
COMPACT 'compaction_type'[AND WAIT]
|
Non compatible. |
Table and artition concatenate
|
ALTER TABLE table_name [PARTITION (partition_key = 'partition_value' [, ...])] CONCATENATE;
|
Non compatible. |
Table and partition columns
|
ALTER TABLE table_name [PARTITION (partition_key = 'partition_value' [, ...])] UPDATE COLUMNS;
|
Non compatible avec les instructions ALTER TABLE .
|
Column name, type, position, and comment
|
ALTER TABLE table_name [PARTITION partition_spec] CHANGE [COLUMN] col_old_name col_new_name column_type
[COMMENT col_comment] [FIRST|AFTER column_name] [CASCADE|RESTRICT];
|
Non compatible. |
Syntaxe LDD
Cette section traite des différences de syntaxe du langage de définition de données (LDD) entre Hive et BigQuery.
Instructions CREATE TABLE
et DROP TABLE
Le tableau suivant fournit des détails sur la conversion des instructions CREATE TABLE
de Hive vers BigQuery :
Type | Hive | BigQuery |
---|---|---|
Tables gérées | create table table_name (
|
CREATE TABLE `myproject`.mydataset.table_name (
|
Tables partitionnées | create table table_name (
|
CREATE TABLE `myproject`.mydataset.table_name (
|
Create table as select (CTAS)
|
CREATE TABLE new_key_value_store
|
CREATE TABLE `myproject`.mydataset.new_key_value_store
Lors du partitionnement par date, annulez la mise en commentaire des éléments suivants :
Lors du partitionnement par date, annulez la mise en commentaire des éléments suivants : Il est recommandé d'utiliser
|
Create Table Like:
Le format |
CREATE TABLE empty_key_value_store
|
Non compatible. |
Tables triées en buckets (dans la terminologie BigQuery) | CREATE TABLE page_view(
|
CREATE TABLE `myproject` mydataset.page_view (
Pour en savoir plus, consultez la page Créer et utiliser des tables en cluster. |
Tables asymétriques (tables dans lesquelles une ou plusieurs colonnes ont des valeurs asymétriques) | CREATE TABLE list_bucket_multiple (col1 STRING, col2 int, col3 STRING)
|
Non compatible. |
Tables temporaires | CREATE TEMPORARY TABLE list_bucket_multiple (
|
Pour ce faire, utilisez le délai d'expiration comme suit :
|
Tables transactionnelles | CREATE TRANSACTIONAL TABLE transactional_table_test(key string, value string) PARTITIONED BY(ds string) STORED AS ORC;
|
Toutes les modifications de table dans BigQuery sont conformes à la norme ACID (atomicité, cohérence, isolation, durabilité). |
Supprimer la table | DROP TABLE [IF EXISTS] table_name [PURGE];
|
{DROP TABLE | DROP TABLE IF EXISTS}
|
Tronquer la table | TRUNCATE TABLE table_name [PARTITION partition_spec];
|
Non compatible. Les solutions suivantes sont disponibles :
Remarque : Des partitions spécifiques peuvent également être tronquées. Pour en savoir plus, consultez la section Supprimer une partition. |
Instructions CREATE EXTERNAL TABLE
et DROP EXTERNAL TABLE
Pour découvrir la compatibilité des tables externes dans BigQuery, consultez la page Présentation des sources de données externes.
Instructions CREATE VIEW
et DROP VIEW
Le tableau suivant fournit des détails sur la conversion des instructions CREATE VIEW
de Hive vers BigQuery :
Hive | BigQuery |
---|---|
CREATE VIEW [IF NOT EXISTS] [db_name.]view_name [(column_name [COMMENT column_comment], ...) ]
|
{CREATE VIEW | CREATE VIEW IF NOT EXISTS | CREATE OR REPLACE VIEW}
|
CREATE MATERIALIZED VIEW [IF NOT EXISTS] [db_name.]materialized_view_name
|
CREATE MATERIALIZED VIEW [IF NOT EXISTS] \
[project_id].[dataset_id].materialized_view_name
|
Instructions CREATE FUNCTION
et DROP FUNCTION
Le tableau suivant fournit des détails sur la conversion des procédures stockées de Hive vers BigQuery :
Hive | BigQuery |
---|---|
CREATE TEMPORARY FUNCTION function_name AS class_name;
|
CREATE { TEMPORARY | TEMP } FUNCTION function_name ([named_parameter[, ...]])
|
DROP TEMPORARY FUNCTION [IF EXISTS] function_name;
|
Non compatible. |
CREATE FUNCTION [db_name.]function_name AS class_name
|
Compatible avec les projets ajoutés à la liste d'autorisation en tant que fonctionnalité alpha.
|
DROP FUNCTION [IF EXISTS] function_name;
|
DROP FUNCTION [ IF EXISTS ] function_name
|
RELOAD FUNCTION;
|
Non compatible. |
Instructions CREATE MACRO
et DROP MACRO
Le tableau suivant fournit des détails sur la conversion des instructions SQL procédurales utilisées lors de la création de macros de Hive vers BigQuery avec une déclaration et une attribution de variables :
Hive | BigQuery |
---|---|
CREATE TEMPORARY MACRO macro_name([col_name col_type, ...]) expression;
|
Non compatible. Dans certains cas, il peut être remplacé par une fonction définie par l'utilisateur. |
DROP TEMPORARY MACRO [IF EXISTS] macro_name;
|
Non compatible. |
Codes et messages d'erreur
Les codes d'erreur Hive et les codes d'erreur BigQuery sont différents. Si votre logique d'application détecte des erreurs, éliminez la source de l'erreur, car BigQuery ne renvoie pas les mêmes codes d'erreur.
Dans BigQuery, il est courant de faire appel aux vues INFORMATION_SCHEMA ou à la journalisation d'audit pour examiner les erreurs.
Garanties de cohérence et isolation de transaction
Hive et BigQuery prennent en charge les transactions avec une sémantique ACID. Les transactions sont activées par défaut dans Hive 3.
Sémantique ACID
Hive est compatible avec l'isolation d'instantané. Lorsque vous exécutez une requête, celle-ci est fournie avec un instantané cohérent de la base de données, qu'elle utilise jusqu'à la fin de son exécution. Hive fournit une sémantique ACID complète au niveau des lignes, ce qui permet à une application d'ajouter des lignes lorsqu'une autre application lit la même partition sans interférer les unes avec les autres.
BigQuery permet un contrôle de simultanéité optimiste (le premier à effectuer un commit l'emporte) avec isolation d'instantané, où une requête lit les dernières données validées avant le démarrage de la requête. Cette approche garantit le même niveau de cohérence pour chaque ligne et mutation, et entre les lignes d'une même instruction LMD, tout en évitant les interblocages. En cas de mises à jour LMD multiples sur la même table, BigQuery bascule vers le contrôle de simultanéité pessimiste. Les jobs de chargement peuvent s'exécuter indépendamment et ajouter des tables. Cependant, BigQuery ne fournit pas de limite de transaction explicite ni de session.
Transactions
Hive n'est pas compatible avec les transactions contenant plusieurs instructions. Il n'est pas compatible avec les instructions BEGIN
, COMMIT
et ROLLBACK
. Dans Hive, toutes les opérations de langage sont validées automatiquement.
BigQuery accepte les transactions multi-instructions dans une seule requête ou sur plusieurs requêtes lorsque vous utilisez des sessions. Une transaction multi-instructions vous permet d'effectuer des opérations de mutation, telles que l'insertion ou la suppression de lignes d'une ou de plusieurs tables, et la validation ou le rollback des modifications. Pour plus d'informations, consultez la section Transactions multi-instructions.