Wielopunktowa rękojeść PIG UDF podzielona na różne programy mapujące

Mam plik, w którym każda krotka obejmuje wiele linii, na przykład:

START
name: Jim
phone: 2128789283
address: 56 2nd street, New York, USA
END
START
name: Tom
phone: 6308789283
address: 56 5th street, Chicago, 13611, USA
END
.
.
.

Tak więc powyżej są 2 krotki w moim pliku. Napisałem mój UDF, który zdefiniowałgetNext() funkcja, która sprawdza, czy jest START, a następnie zainicjalizuję moją krotkę; jeśli jest to END, zwrócę krotkę (z bufora łańcuchowego); w przeciwnym razie dodam ciąg do buforu łańcuchowego.

Działa to dobrze dla rozmiaru pliku mniejszego niż rozmiar bloku HDFS, który wynosi 64 MB (w Amazon EMR), podczas gdy nie powiedzie się dla rozmiaru większego niż ten. Próbuję poszukać w Google, znajdź topost na blogu. Wyjaśnienie Raja jest łatwe do zrozumienia i dostarczył przykładowy kod. Ale kod implementujeRecordReader część zamiastgetNext() dla świniLoadFunc. Zastanawiam się tylko, czy ktoś ma doświadczenie, aby poradzić sobie z problemem rozdzielania krotek świń w wielu wierszach? Czy powinienem iść dalej wdrażaćRecordReader prośna? Jeśli tak to jak?

Dzięki.

questionAnswers(2)

yourAnswerToTheQuestion