2012-05-24 10 views
1

Les modèles de données Cassandra nécessitent fréquemment des mises à jour de plusieurs familles de colonnes pour prendre en charge une seule "écriture" (c'est-à-dire mettre à jour les deux côtés d'un index bidirectionnel). Comment est-ce que je peux faire ceci avec Hadoop, quand la configuration de travail permet seulement de spécifier une famille simple de colonne de sortie?Comment générer plusieurs familles de colonnes Cassandra dans un seul travail Hadoop?

Répondre

3

Ceci est possible par rapiéçage Cassandra 1.1 en utilisant le patch disponible à:

https://issues.apache.org/jira/browse/CASSANDRA-4208

Une fois que vous avez cela, au lieu de ConfigHelper.setOutputColumnFamily(), vous appelez ConfigHelper.setKeyspace(). Ensuite, vous pouvez utiliser l'API MultipleOutputs pour spécifier vos CFs de sortie dans la configuration de l'emploi comme suit:

MultipleOutputs.addNamedOutput(job, "ColumnFamily1", ColumnFamilyOutputFormat.class, ByteBuffer.class, List.class); 
MultipleOutputs.addNamedOutput(job, "ColumnFamily2", ColumnFamilyOutputFormat.class, ByteBuffer.class, List.class); 

Lorsque vous êtes prêt à la sortie, référence simplement le CF nommé comme nom de sortie:

output.write("ColumnFamily1", key, Collections.singletonList(mutation)); 

output est une référence à votre instance MultipleOutputs dans votre réducteur.

+1

Si vous utilisez une version actuelle, vous n'avez plus besoin de patcher. –

Questions connexes