2017-02-24 1 views
1

J'ai un fichier avec le contenu suivant:HBase stockage de données pour une colonne particulière avec 2 ou plusieurs valeurs pour la même ligne-clé dans l'API Scala/Java

UserID Email    
1001  [email protected]  
1001  [email protected]  
1002  [email protected] 
1002  [email protected] 

Je veux stocker les données comme celui-ci:

ROW   COLUMN+CELL                     
1001   column=cf:Email, timestamp=1487917201278, [email protected] 
1001   column=cf:Email, timestamp=1487917201279, [email protected]                         
1002   column=cf:Email, timestamp=1487917201286, [email protected] 
1002   column=cf:Email, timestamp=1487917201287, [email protected] 

J'utilise Put par exemple: put 'table', '1001', 'cf:Email', '[email protected]' mais il me donne

ROW   COLUMN+CELL                      
1001   column=cf:Email, timestamp=1487917201279, [email protected]                         
1002   column=cf:Email, timestamp=1487917201286, [email protected] 

Il remplace la valeur précédente. Mais HBase supposé stocker plusieurs valeurs pour une colonne particulière en fonction de l'horodatage. Y at-il de toute façon que je peux stocker les deux adresses e-mail pour un certain UserID?

Répondre

1

Vous voudrez peut-être regarder de plus près à the HBase documentation on versions. Notez surtout où il est dit

Par défaut, à savoir si vous spécifiez pas de version explicite, lorsque vous faites une get, la cellule dont la version a la plus grande valeur est retournée

Mais je ne poursuivrait pas l'utilisation plusieurs versions pour stocker plusieurs valeurs de cette façon. Vous devez spécifier explicitement le nombre maximum de versions et il s'appliquera à chaque colonne de cette famille. Je serais plus enclin à utiliser des noms de colonne distincts (tels que Email1, Email2, ...)

+0

Merci Joe pour l'info. –

1

Vous devez spécifier le nombre de versions pour la famille de colonnes "cf". Par défaut, le nombre de versions est 1. Effectuez les opérations suivantes dans la coquille HBase modifier table existante:

alter 'table', {NAME => 'cf', VERSIONS => 2147483647}

En savoir plus sur les versions dans HBase here.

+0

Merci Ashu pour l'info. –