2013-07-17 6 views
5

Also mein begrenztes Verständnis von Redshift das ist mein Plan für mein Problem ...Wie wird die Ausgabe der RedShift-Abfrage als Eingabe eines EMR-Jobs verwendet?

Ich möchte die Ergebnisse einer Abfrage nehmen, und sie als Eingabe für einen EMR-Job verwenden. Was ist der beste Weg, dies programmatisch zu erreichen?

Momentan verwendet mein EMR-Job eine flache Datei von S3 als Eingabe, und ich benutze das Amazon Java SDK, um diesen Job und alles einzurichten.

Sollte ich die Ausgabe meiner RedShift-Abfrage in S3 schreiben und dort meinen EMR-Job zeigen und dann die Datei entfernen, nachdem der EMR-Job abgeschlossen ist?

Oder bieten RedShift und AWS SKD eine einfallsreichere Möglichkeit, die Abfrage direkt von RedShift zu EMR zu leiten, wodurch der S3-Schritt entfällt?

Dank

Kürzlich mit memebers von Amazon Redshift-Team sprach, sagten, dass sie eine Lösung für diese ist in Arbeit.

Antwort

4

Das ist ziemlich einfach - keine Notwendigkeit für Sqoop. Fügen Sie einen Cascading Lingual Schritt auf der Vorderseite Ihrer Arbeit, die eine Rotverschiebung UNLOAD Befehl S3 ausführt:

UNLOAD ('select_statement') 
TO 's3://object_path_prefix' 
[ WITH ] CREDENTIALS [AS] 'aws_access_credentials' 
[ option [ ... ] ] 

Dann können Sie entweder verarbeiten, um den Export direkt auf S3, oder fügen Sie ein S3DistCp Schritt die Daten auf HDFS zuerst zu bringen.

Dies wird viel leistungsfähiger als das Hinzufügen von Sqoop, und viel einfacher zu pflegen.

Verwandte Themen