Maison > Java > javaDidacticiel > le corps du texte

Comment mettre à jour efficacement et incrémentiellement de grandes tables Hive ?

DDD
Libérer: 2024-11-17 03:41:03
original
983 Les gens l'ont consulté

How to Efficiently Update Large Hive Tables Incrementally?

Hive : mises à jour incrémentielles efficaces pour la table principale

Présentation du problème

Maintenance de grandes tables principales dans Hive nécessite une stratégie pour gérer efficacement les mises à jour incrémentielles de données. Le défi réside dans l'équilibre entre vitesse et précision lors de la gestion des données nouvelles et mises à jour.

Approches

Approche 1 : Supprimer et insérer

  • Recherchez les entrées mises à jour et supprimez-les de la table principale.
  • Insérez la nouvelle entrée incrémentielle données.

Avantages : Insertions rapides
Inconvénients : Suppressions lentes

Approche 2 : Déclaration de mise à jour

  • Utilisez l'instruction UPDATE pour faire correspondre les valeurs clés et mettre à jour des données spécifiques champs.

Avantages : Mises à jour précises
Inconvénients :Très lent en raison de逐条更新。

Solution optimisée

Si le mode ACID n'est pas disponible, une combinaison de FULL OUTER JOIN ou UNION ALL et row_number() fournit une solution efficace :

Requête 1 (FULL OUTER JOIN) :

insert overwrite target_data [partition()]
SELECT
  --select new if exists, old if not exists
  case when i.PK is not null then i.PK   else t.PK   end as PK,
  case when i.PK is not null then i.PK   else t.PK   end as PK,
  ...
  case when i.PK is not null then i.COL_n else t.COL_n end as COL_n
FROM
    target_data t
    FULL JOIN increment_data i on (t.PK=i.PK);
Copier après la connexion

Requête 2 (UNION TOUS) :

INSERT OVERWRITE TABLE target_data
SELECT * FROM incremental_data
UNION ALL
SELECT * FROM target_data
WHERE
    NOT (PK IN (SELECT PK FROM incremental_data));
Copier après la connexion

Conseils

  • Restriction des partitions dans les opérations JOIN/UNION pour une exécution plus rapide.
  • Envisagez d'utiliser UNION ALL si toutes les colonnes doivent être mises à jour avec de nouvelles données.

Avantages de la solution optimisée

  • Mises à jour rapides et efficaces
  • Gère avec précision les données nouvelles et mises à jour
  • Évolutif pour les grands ensembles de données

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal