Tak wiem, tym razem powinienem opisać konfiguracje klastra Hadoop, ale nie mogłem się oprzeć pokusie zabawy dzieckiem korporacji Yahoo. Pig, bo o nim mowa, to platforma oraz język wysokiego poziomu do pisania Jobów MapReduce. Wyczytałem na jednej z marketingowych prezentacji, że używając Piga wystarczy 5% kodu, oraz 5% czasu, który musielibyśmy poświęcić, aby osiągnąć ten sam efekt w Javie. Brzmi nieźle.
Tradycyjnie zaczynamy od instalacji.
Pig pobieramy z tego adresu.
Rozpakowujemy paczkę.
Sprawdzamy czy działa poleceniem:
bin/pig -help
Pig może działać w dwóch trybach:
1. Lokalnym - nie potrzebuje uruchomionego Hadoopa
W pliku <pig_home>/bin/pig.sh dodajemy zmienne środowiskowe:
To co właśnie widzimy, to konsola, grunt umożliwiająca pisanie skryptów. Kolejną możliwością jest uruchamianie skryptów z pliku:
Spróbujmy napisać skrypt, który zrobi dokładnie to samo, co testowy Job MapReduce, czyli zliczy wystąpienie poszczególnych słów w pliku.
Uruchamiamy konsole grunt:
Wyniki sprawdzamy poleceniem:
bin/pig -x local2. MapReduce - używa uruchomionego klastra:
W pliku <pig_home>/bin/pig.sh dodajemy zmienne środowiskowe:
PIG_PATH=<pig_home> PIG_CLASSPATH=$PIG_PATH/pig-0.7.0-core.jar:<hadoop_home>/conf PIG_HADOOP_VERSION=0.20.2Uruchamiamy poleceniem:
bin/piglub
bin/pig -x mapreduce
To co właśnie widzimy, to konsola, grunt umożliwiająca pisanie skryptów. Kolejną możliwością jest uruchamianie skryptów z pliku:
bin/pig skrypt.pigMożemy również wywołać skrypt z kodu Javowego.
Spróbujmy napisać skrypt, który zrobi dokładnie to samo, co testowy Job MapReduce, czyli zliczy wystąpienie poszczególnych słów w pliku.
Uruchamiamy konsole grunt:
bin/pigZaładujemy dane poleceniem:
fs -copyFromLocal conf pig_test_dataTak wygląda skrypt:
rawData = load 'pig_test_data'; words = foreach rawData generate flatten(TOKENIZE($0)) as word; filteredWords = filter words by word matches '\\w+'; groupedWords = group filteredWords by word; countedWords = foreach groupedWords generate COUNT(filteredWords), group; orderedCountedWords = order countedWords by $0 desc; store orderedCountedWords into 'pig_test_data_output/char_freq';
Wyniki sprawdzamy poleceniem:
fs -cat pig_test_data_output/char_freq/part-r-00000
Po szczegóły dotyczące składni języka Pig odysłam do naprawdę niezłej dokumentacji.
Brak komentarzy:
Prześlij komentarz