Программа Custom Map Reduce на Hive, какое правило?Как насчет ввода и вывода? - PullRequest
10 голосов
/ 30 мая 2011

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

Каково правило для создания моей пользовательской программы mapreduce, как насчет класса картографа и редуктора?

Может кто-нибудь предложить какое-нибудь решение?

Я хочу разработать эту программу на Java, но я все еще застрял, а затем при форматировании вывода в сборщике, как мне отформатировать результат в классах мапперов и редукторов?

Кто-нибудь хочет привести мне пример и объяснение такого рода вещей?

1 Ответ

23 голосов
/ 27 июля 2011

Существует два основных способа добавления пользовательских картографов / редукторов к запросам улья.

  1. с использованием transform

SELECT TRANSFORM (stuff1, stuff2)FROM table1, ИСПОЛЬЗУЯ «script» КАК thing1, thing2

, где stuff1, stuff2 - поля в table1, а script - любой исполняемый файл, который принимает формат, который я опишу позже.thing1, thing2 - это выходные данные из скрипта

  1. , использующие карту и уменьшающие
FROM (
    FROM table
    MAP table.f1 table.f2
    USING 'map_script'
    AS mp1, mp2
    CLUSTER BY mp1) map_output
  INSERT OVERWRITE TABLE someothertable
    REDUCE map_output.mp1, map_output.mp2
    USING 'reduce_script'
    AS reducef1, reducef2;

Это немного сложнее, но дает больший контроль.Есть 2 части к этому.В первой части скрипт mapper получит данные из table и отобразит их в поля mp1 и mp2.затем они передаются в reduce_script, этот скрипт получит отсортированный вывод по ключу, который мы указали в CLUSTER BY mp1. Обратите внимание, более одного ключа будет обрабатываться одним редуктором .Выходные данные сценария сокращения будут идти в таблицу someothertable

Теперь все эти сценарии следуют простому шаблону.они будут читать строку за строкой из стандартного ввода.Поля будут \t разделены, и они будут записывать обратно в стандартный вывод таким же образом (поля, разделенные '\ t')

Посмотрите этот блог, есть несколько хороших примеров.

http://dev.bizo.com/2009/07/custom-map-scripts-and-hive.html

http://dev.bizo.com/2009/10/reduce-scripts-in-hive.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...