Niestandardowy program do zmniejszania Map na Ulu, jaka jest zasada? A co z wejściem i wyjściem?
Utknąłem na kilka dni, ponieważ chcę stworzyć własny program do zmniejszania map na podstawie mojego zapytania na Ulu, po googlowaniu znalazłem niewiele przykładów i nadal jestem zdezorientowany co do zasady.
Jaka jest zasada tworzenia własnego programu mapreduce, a może Klasa mapper i reducer?
Czy ktoś może podać jakieś rozwiązanie?
Chcę rozwijać ten program w Javie, ale nadal utknąłem ,a następnie podczas formatowania wyjścia w kolektorze, jak sformatować wynik w klasie mapera i reduktora?
Czy ktoś chce mi podać jakiś przykład i Wyjaśnienie na ten temat?
1 answers
Istnieją zasadniczo 2 sposoby dodawania niestandardowych maperów / reduktorów do zapytań hive.
- użycie
transform
Wybierz TRANSFORM (stuff1, stuff2) z table1 używając 'script' jako thing1, thing2
Gdzie stuff1, stuff2 to pola w table1, a script to dowolny plik wykonywalny, który akceptuje format, który opiszę później. thing1, thing2 są wyjściami skryptu
- korzystanie z map i redukować
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;
To jest nieco bardziej skomplikowane, ale daje większą kontrolę. Są 2 części. W pierwszej części skrypt mapera otrzyma dane z table
i zmapuje je do pól mp1 i mp2. są one następnie przekazywane do reduce_script
, skrypt ten otrzyma sortowane dane wyjściowe na kluczu, który określiliśmy w CLUSTER BY mp1
. pamiętaj, że więcej niż jeden klucz będzie obsługiwany przez jeden reduktor. Wyjście skryptu reduce trafi do Tabeli someothertable
Teraz wszystkie te skrypty podążają za prostym wzorcem. będą czytać wiersz po wierszu od stdin. Pola będą oddzielone \t
i będą odpisywać na stdout, w ten sam sposób (pola oddzielone '\t')
Zajrzyj na ten blog, jest kilka fajnych przykładów.
Http://dev.bizo.com/2009/07/custom-map-scripts-and-hive.html
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-07-27 07:24:25