Итератор редактирования строк в Apache Accumulo

Я работаю с Apache Accumulo, и мне нужно создать итератор, который при каждом незначительном уплотнении сканирует всю строку целиком, создает MD5 из двух столбцов и сохраняет его как еще один столбец моей строки...

Пример:

Я вставляю эти данные:

|| Row || colFam || colQual || value ||
||=====||========||=========||=======||
|| A   || person || name    || Bob   ||
|| A   || person || surname || Smith ||
|| A   || work   || place   || Bank  ||
|| B   || person || name    || Jhon  || 
|| B   || person || surname || Allen ||
|| B   || work   || place   || Pub   ||
...
...

Мне нужен итератор, который каждый раз, когда я пишу строку (A или B со всеми ее colFam e colQual), получает значение двух столбцов (имя и фамилия) и вычисляет MD5 результирующей строки (имя + фамилия) и сохраняет ее как столбец моей строки.

Результат должен быть таким:

|| Row || colFam || colQual || value        ||
||=====||========||=========||==============||
|| A   || person || name    || Bob          ||
|| A   || person || surname || Smith        ||
|| A   || work   || place   || Bank         ||
|| A   || MD5    || MD5     || <MD5 result> || <--
|| B   || person || name    || Jhon         || 
|| B   || person || surname || Allen        ||
|| B   || work   || place   || Pub          ||
|| B   || MD5    || MD5     || <MD5 result> || <--
....
....

Я думаю, что я могу поставить этот итератор на незначительное (/большое) уплотнение таблицы.

Есть идеи? Какой из встроенных итераторов мне нужно расширить для этого?

Большое спасибо


person Revan1988    schedule 09.06.2015    source источник
comment
Так в чем твоя проблема. Предоставьте дополнительную информацию, что вам нужно   -  person Gajendra K Chauhan    schedule 09.06.2015
comment
@GajendraKChauhan, ты здесь! :)   -  person Revan1988    schedule 09.06.2015
comment
Это мой предмет интереса :)   -  person Gajendra K Chauhan    schedule 09.06.2015
comment
У меня возникли проблемы с разбором вашего вопроса, но из того, что я могу собрать воедино, похоже, что вы хотите расширить WholeRowIterator для записи новых значений при сжатии? Вы можете сделать это, но в зависимости от того, чего вы пытаетесь достичь, это может быть не лучший подход. Будет окно между тем, когда данные находятся в таблице, и когда они будут записаны в HDFS (незначительное уплотнение), где у вас будут строки без каких-либо результатов MD5.   -  person FuriousGeorge    schedule 09.06.2015
comment
Итак, мне нужно рассчитать и добавить ко всем моим строкам столбец для MD5 из двух других столбцов. Я думаю, что сделать это с помощью итераторов будет лучшим способом.. но я не эксперт, и я не знаю, как это сделать.. Я думаю, что мне нужно расширить WholeRowIterator, а затем для каждой строки добавить новый колонка (с батчрайтером)... Правильно?   -  person Revan1988    schedule 09.06.2015
comment
Аналогичное приложение представляет собой итератор, который для каждой строки вставляет столбец, в котором пишет, сколько столбцов в этой строке... Мне нужно: получить данные из одной строки (= получить столбцы строки), обработать эти данные в каким-то образом (в моем случае вычислить MD5,...), а затем поместить результат обработки в новый столбец с этим выводом в качестве значения. Любая помощь??   -  person Revan1988    schedule 09.06.2015


Ответы (1)


Ознакомьтесь с Итератор преобразования. Этот итератор пытается скрыть некоторые сложности операций на уровне строк.

Общая стратегия заключается в том, что при повторении строки вы должны буферизовать строку в памяти, выполнить вычисления, а затем записать строку в правильном порядке сортировки.

person elserj    schedule 26.03.2017