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

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

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

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

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

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

Ответ 1

В основном есть два способа добавления пользовательских карт/редукторов к запросам на улей.

  • с помощью transform

SELECT TRANSFORM (stuff1, stuff2) FROM table1 ИСПОЛЬЗОВАНИЕ 'script' AS thing1, thing2

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

  • с использованием карты и сокращения
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;

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

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

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

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

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