Как использовать карту Кассандры Уменьшить с помощью или без свиней?

Может кто-нибудь объяснить, как MapReduce работает с Cassandra.6? Я прочитал пример подсчета слов, но я не совсем понимаю, что происходит на конце Cassandra по сравнению с "клиентом".

https://svn.apache.org/repos/asf/cassandra/trunk/contrib/word_count/

Например, скажем, я использую Python и Pycassa, как бы я загрузил новую функцию сокращения карты, а затем назову ее? Должна ли моя функция уменьшения карты быть java, установленной на сервере cassandra? Если да, то как я могу назвать это из Pycassa?

Там также упоминается о том, что Pig делает все это проще, но я полный Hadoop noob, так что это действительно не помогло.

В вашем ответе можно использовать Thrift или что-то еще, я только что упомянул Pycassa, чтобы обозначить клиентскую сторону. Я просто пытаюсь понять разницу между тем, что работает в кластере Cassandra, и фактическим сервером, делающим запросы.

Ответ 1

Из того, что я слышал (и от здесь), способ, которым разработчик пишет программу MapReduce, которая использует Cassandra в качестве источника данных как следует. Вы пишете обычную программу MapReduce (пример, к которому вы привязаны, относится к версии pure-Java), а имеющиеся в настоящее время банки предоставляют CustomInputFormat, который позволяет исходному источнику быть Cassandra (вместо значения по умолчанию, которое является Hadoop).

Если вы используете Pycassa, я бы сказал, что вам не повезло, пока (1) разработчик этого проекта не добавит поддержку MapReduce или (2) вы бросаете некоторые функции Python вместе, которые записывают программу Java MapReduce и запустите его. Последнее, безусловно, немного взломано, но вас ожидают.

Ответ 2

Победа в использовании прямого InputFormat из cassandra заключается в том, что она эффективно передает данные, что является очень большой победой. Каждый входной разъем охватывает диапазон токенов и сбрасывается с диска на полную полосу пропускания: нет поиска, нет сложных запросов. Я не думаю, что он знает о локальности - чтобы каждый tasktracker предпочитал входные расщепления из процесса cassandra на том же node.

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

Ответ 3

Он знает о местности; Cassandra InputFormat переопределяет getLocations(), чтобы сохранить локальность данных