2017-01-05 2 views
1

kompletter Neuling auf piglatin, aber auf der Suche Daten aus dem MetOffice Datapoint API z.B .:Aufruf API von piglatin

http://datapoint.metoffice.gov.uk/public/data/val/wxfcs/all/xml/350509?res=3hourly&key=abc123 ....

... in Hadoop zu ziehen.

Meine Frage ist "Kann dies mit PigLatin (aus Pig View, in Ambari) durchgeführt werden"?

Ich habe gejagt für, wie man eine GET-Anfrage in den Code formatiert, aber ohne Glück.

Banne ich den falschen Baum an? Soll ich einen anderen Dienst innerhalb des Hadoop-Frameworks verwenden, um dies zu erreichen?

Antwort

1

Es ist sehr schlechte Idee, Anrufe von externen Karten innerhalb von Map-Reduce-Jobs zu tätigen. Der Grund dafür ist, dass Ihre Jobs beim Ausführen auf dem Cluster sehr skalierbar sind, während dies beim externen System möglicherweise nicht der Fall ist. Moderne Ressourcenmanager wie YARN machen diese Situation noch schlimmer, wenn Sie ein externes System mit den Anforderungen überschwemmen, die Ihre Aufgaben auf dem Cluster meist schlafend warten und auf eine Antwort vom Server warten. Der Ressourcenmanager wird sehen, dass die CPU nicht von Tasks verwendet wird, und plant mehr Tasks für die Ausführung, wodurch noch mehr Anforderungen an das externe System gestellt werden und die Requests noch mehr überschwemmt werden. Ich habe bescheidene 100 Maschinencluster gesehen, die 100.000 Anfragen pro Sekunde ausgeben.

Was Sie wirklich wollen, ist, entweder die Massen-Daten aus dem Web-Service irgendwie zu erhalten oder ein System mit einer Warteschlange und wenig kontrollierter Anzahl von Arbeitern einzurichten, die mit der eingestellten Rate aus dem externen System ziehen.

Wie für Ihre ursprüngliche Frage, ich denke nicht, PigLatin bietet solchen Service, aber es könnte leicht mit UDFs entweder Python oder Java getan werden. Mit Python können Sie eine ausgezeichnete Bibliothek requests verwenden, die Ihre UDF etwa 6 Zeilen Code macht. Java UDF wird etwas ausführlicher sein, aber nach Java-Standards nichts Schlimmes.

+0

Vielen Dank @Vlad, ich werde die Python-Anfragen-Bibliothek erkunden, wie Sie vorschlagen. – Jon295087

0

"Kann dies mit PigLatin (von innerhalb Pig View, in Ambari) durchgeführt werden"?

Nein, standardmäßig wird Pig vom HDFS-Speicher geladen, es sei denn, Sie schreiben Ihren eigenen Loader.

Und ich teile den gleichen Punkt mit @Vlad, dass dies keine gute Idee ist, haben Sie viele andere Komponenten für die Datenaufnahme verwendet, aber dies ist kein Anwendungsfall von Pig!

+0

Danke für Ihre Hilfe @ 54l3d – Jon295087