Oui, il y a un moyen de le faire dans la Ruche. Vous avez juste besoin de créer une carte et ensuite exploser dit carte.
Requête:
CREATE TABLE db.new AS
SELECT pid, priority, value
FROM (
SELECT pid
, MAP('high', high, 'medium', medium, 'low', low) AS tmp
FROM db.old ) x
LATERAL VIEW EXPLODE(tmp) explode_table AS priority, value
Sortie:
---------------------
pid priority value
---------------------
1 low 6
1 medium 8
1 high 10
2 low 12
2 medium 16
2 high 20
3 low 4
3 medium 6
3 high 10
Cette seules réponses de la moitié de sa question, il veut que le jeu de résultats apparaissent dans la ruche comme une autre table. Vous ne savez pas si ses besoins nécessitent qu'il soit stocké (ce qui signifie, nous devrions avoir à stocker le résultat dans HDFS et une autre table de la ruche lire), ou s'il peut s'en tirer avec juste une vue basée sur cette sélection. Je pense qu'il répond à 99% environ de la question. Stockage des données dans une nouvelle table à partir d'une requête est trivial. De toute façon j'ai édité. Merci ,ça fonctionne pour moi Je vous remercie. Mais comment exactement faire le contraire, qui est de transformer la longue table de large? Voir cette réponse que j'ai écrit sur Quora
Oui, il y a un moyen de le faire dans la Ruche. Vous avez juste besoin de créer une carte et ensuite exploser dit carte.
Requête:
Sortie:
Je pense qu'il répond à 99% environ de la question. Stockage des données dans une nouvelle table à partir d'une requête est trivial. De toute façon j'ai édité.
Merci ,ça fonctionne pour moi
Je vous remercie. Mais comment exactement faire le contraire, qui est de transformer la longue table de large?
Voir cette réponse que j'ai écrit sur Quora
OriginalL'auteur gobrewers14