Comment puis-je `diff` deux tables Accumulo?


0

Si je voulais comparer deux tables Accumulo similaires et mettre en évidence leurs différences, comment pourrais-je faire cela?

Ma première pensée a été de créer des vidages de base de données et d’exécuter Unix diffsur les fichiers, mais cela ne serait pas à l’échelle.

Ma deuxième pensée est peut-être qu'il y a un moyen de synchroniser deux tables Accumulo, avec une option de série sèche, qui permettrait de rassembler les différences quelque part.

... y a-t-il au moins un moyen de faire cela dans HBase?

Réponses:


2

Malheureusement, je ne sais rien de ce qui existe pour faire cela.

En gros, vous pouvez implémenter cela avec deux scanners et effectuer une lecture fusionnée. Comme les deux scanneurs renvoient des données triées, si les deux valeurs-clés sont égales, vous faites avancer les deux scanneurs. Si la clé de Scanner1 est triée avant la clé de Scanner2, vous savez que celle-ci n'existe pas dans la table de Scanner2 et vous faites avancer Scanner1. Si la clé de Scanner2 est triée avant la clé de Scanner1, cette clé n'existe pas dans la table à partir de Scanner2 et vous faites avancer Scanner2.

Cependant, comme vous l'avez dit, ce serait assez lent car vous avez un seul thread qui lit une table et vous avez probablement plusieurs cœurs pour faire fonctionner les choses simultanément.

Pour créer cette échelle, vous pouvez "partitionner" votre table en compartiments (par exemple, si vos clés de table sont l'alphabet [A, B, C, ... Z], chaque partition pourrait être une lettre dans ce cas), et vous pourrez parallélisez votre même algorithme. En utilisant l’exemple de l’alphabet, vous pourriez avoir 26 clients lisant simultanément sur les portions des tableaux. C’est aussi quelque chose qui pourrait facilement être implémenté en tant que tâche de réduction de carte.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.