4 votes

Comment mettre à jour une valeur dans une table de ruche ?

J'ai une colonne de drapeau dans une table Hive que je veux mettre à jour après un certain traitement. J'ai essayé d'utiliser hive et impala en utilisant la requête ci-dessous mais cela n'a pas fonctionné, et j'ai obtenu que cela doit être une table kudu alors que la table que j'ai est une table non-kudu. Existe-t-il un moyen de la mettre à jour comme la requête ci-dessous ?

UPDATE table_name SET flag_col = 1
where [condition];

1voto

leftjoin Points 6979

Remplacer toute la table par des valeurs calculées, toutes les autres colonnes restant telles quelles :

insert overwrite table table_name 
select col1, col2, ..., coln, 
       case when [condition] then 1 else flag_col end as flag_col,
       colO, 
       colP...
  from table_name ;

Lisez la documentation pour plus de détails sur les tables partitionnées, etc : https://docs.cloudera.com/documentation/enterprise/5-8-x/topics/impala_insert.html

1voto

yusuf hayırsever Points 590

Hive ne supporte pas les mises à jour (ou les suppressions), mais il supporte INSERT INTO, il est donc possible d'ajouter de nouvelles lignes à une table existante.

> insert overwrite table table_name 
> select *,
 case when [condition] then 1 else flag_col end as flag_col,
 from table_name 

//If you want to use you can add where// > where id <> 1;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X