2012-02-28 4 views
1

Je suis confronté à l'objet $, lorsque je tente de créer dynamiquement des familles de colonnes. J'utilise Hector pour cela, et j'ai le niveau de cohérence par défaut. Je crois, la raison est que Hector renvoie la méthode de famille de la colonne de création avant que la famille de colonnes soit répliquée à travers le cluster. Comment puis-je gérer cela de manière appropriée?Etat de cluster incohérent lors de la création de familles de colonnes par programme dans Cassandra

Répondre

1

Vous croyez? S'il vous plaît lire ceci link, il a un exemple sur la façon de créer la famille de colonnes, puis imprimer la définition de la famille de colonnes. Une fois la famille de colonnes créée dans le cluster Cassandra, le schéma se propage sur les nœuds du cluster. Si vous souhaitez inspecter la famille de colonnes dans le nœud Cassandra, vous pouvez probablement utiliser cassandra-cli et la commande show schema.

Edit: De suivre les commentaires, la solution consiste à mettre à niveau le hector à la dernière version et appeler la méthode addColumnFamily(cfdef, true);, qui est d'attendre que le schéma se propage dans le cluster. Ensuite, commencez à insérer des données (nom de colonne et sa valeur) dans cette famille de colonnes.

+0

Quand je dis par programme, je regardais faire cela à partir du code. Je ne veux pas utiliser le cli. Ce lien que vous avez indiqué ne résout pas le problème. C'est en ajoutant un espace de touches avec un CF. Je veux juste ajouter un CF (sans perdre mon espace de frappe, et perdre toutes les données que j'ai) dynamiquement, et assurez-vous qu'il est propagé. J'espère que j'ai du sens ici. –

+0

@TharinduMathew Je suis désolé car je ne peux pas m'exprimer clairement ;-). Avant de faire cette édition, puis-je avoir votre confirmation que voulez-vous exactement faire? Voulez-vous dire que vous voulez ajouter dynamiquement un nom de colonne et sa valeur dans la famille de colonnes existante et vérifier que la colonne qui est insérée est propagée dans le cluster? – Jasonw

+0

Essayer à nouveau :). Cluster de 3 nœuds de Cassandra 0,7. J'ai un problème de concurrence. Un nombre différent de threads tente de créer une famille de colonnes et d'insérer des données. Donc, je synchronise ceci pour qu'un seul thread crée une famille de colonnes, et vérifie que la modification s'est propagée à travers le cluster. Mais ce résultat est incompatible avec Hector. J'ai partiellement trouvé une solution. Maintenant j'utilise l'API Thrift de describe_schema pour vérifier les versions incohérentes à travers le cluster. Mais parfois, il ne se propage tout simplement pas à travers le cluster et aboutit à 2 versions de schéma. Une façon d'aborder cela? –

Questions connexes