Эффективная обработка всех данных в семействе столбцов Cassandra с помощью задания MapReduce - PullRequest
2 голосов
/ 06 февраля 2012

Я хочу обработать все данные в семействе столбцов в задании MapReduce. Заказ не важен.

Подход состоит в том, чтобы перебрать все ключи строк семейства столбцов для использования в качестве входных данных. Это может быть узким местом и может быть заменено параллельным методом.

Я открыт для других предложений или для того, чтобы кто-то сказал мне, что я трачу свое время на эту идею. В настоящее время я расследую следующее:

Потенциально более эффективный способ состоит в том, чтобы назначать входные диапазоны вместо итерации по всем ключам строки (до запуска преобразователя). Поскольку я использую RandomPartitioner, есть ли способ указать диапазон для запроса на основе MD5?

Например, я хочу разбить задачу на 16 заданий. Поскольку RandomPartitioner основан на MD5 (из того, что я прочитал), я бы хотел запросить все, начиная с a для первого диапазона. Другими словами, как бы я запросил get_range для MD5 с началом a и завершением до b. например a0000000000000000000000000000000 - afffffffffffffffffffffffffffffff

Я использую Pycassa API (Python), но я рад видеть примеры Java.

1 Ответ

1 голос
/ 08 февраля 2012

Я бы немного обманул:

  1. Создание новых строк job_ (n) с каждым столбцом, представляющим каждый ключ строки в требуемом диапазоне
  2. Извлечение всех столбцов из этого конкретногострока, чтобы указать, какие строки вы должны извлечь из CF

Я делаю это с пользователями.Пользователи из определенной страны получают столбец в строке конкретной страны.Пользователи с определенным возрастом также добавляются в определенную строку.

Позволяет мне быстро извлекать нужные мне строки на основе нужных мне критериев и является немного более эффективным по сравнению с вытягиванием всех элементов.* Вот как работает пример Mahout CassandraDataModel:

Когда у вас есть данные и вы можете извлечь интересующие вас строки, вы можете передать ихна вашу работу MR.

В качестве альтернативы, если скорость не является проблемой, посмотрите на использование PIG: Как использовать Cassandra's Map Reduce с или без Pig?

...