Hadoop: Map Reduce: чтение из HBase, но фильтрация строк по содержимому одного столбца - PullRequest
1 голос
/ 16 марта 2012

Я действительно новичок в Hadoop и не могу найти ответ на свой вопрос.Я хочу написать работу по сокращению карты, где я читаю из HBase и затем пишу в простом текстовом файле.

В HBase у меня есть столбец, представляющий идентификатор.Теперь я не хочу работать с всеми , содержащими строки в моей таблице HBase, но только с теми между maxId и minId.

Я обнаружил, что мог бы использовать пользовательские фильтры (scan.setFilter), чтобы я мог фильтровать строки, которые не соответствуют моему запросу.

Это моя первая работа по сокращению карты, поэтому наберитесь терпения-)

У меня есть начальный класс, где я настраиваю работу и объект сканирования, а затем запускаю работу.

Теперь моя первая попытка выглядит следующим образом:

private Scan getScan()
{
    final Scan scan = new Scan();

    // ** FILTER **
    List<Filter> filters = new ArrayList<Filter>();

    Filter filter1 = new ValueFilter(CompareFilter.CompareOp.GREATER_OR_EQUAL, new BinaryComparator(Bytes.toBytes(Integer.parseInt(minId))));
    filters.add(filter1);

    Filter filter2 = new ValueFilter(CompareFilter.CompareOp.LESS_OR_EQUAL, new BinaryComparator(Bytes.toBytes(Integer.parseInt(maxId))));
    filters.add(filter2);

    FilterList filterList = new FilterList(filters);

    scan.setFilter(filterList); 

    scan.setCaching(500);
    scan.setCacheBlocks(false);
    // id
    scan.addColumn("columnfamily".getBytes(), "id".getBytes());
    return scan;
}

Ну, я не уверен, что это правильный способ сделать это.Я также прочитал, что могу передать свои minId и maxId, возможно, с Объектом конфигурации, в задание на карту, но я не уверен, как.

Кроме того, что мне делать потом?Обычно я просто запускаю задание с помощью initTableMapperJob и передаю ему объект сканирования.Я прочитал что-то из ResultScanner и так, они мне нужны?Я думал, что MapReduce Framework теперь будет автоматически передавать правильные строки моему заданию карты, это правильно?

...