2013-07-17 36 views
5

Moje ograniczone rozumienie Redshift to mój plan radzenia sobie z moim problemem ...Jak używać danych wyjściowych zapytania RedShift jako wejścia do zadania EMR?

Chcę pobrać wyniki zapytania i wykorzystać je jako dane wejściowe dla zadania EMR. Jaki jest najlepszy sposób na to programowo.

Obecnie moje zadanie EMR przyjmuje płaski plik z S3 jako dane wejściowe, a ja używam zestawu SDK Amazon Java, aby ustawić to zadanie i wszystko.

Czy powinienem zapisać dane wyjściowe mojego zapytania RedShift do S3 i wskazać tam moje zadanie EMR, a następnie usunąć plik po zakończeniu zlecenia EMR?

A może RedShift i AWS SKD oferują bardziej pomysłowy sposób bezpośredniego przesłania zapytania z RedShift do EMR, wycinając krok S3?

Dzięki

Ostatnio rozmawiałem z memebers Amazonki redshifcie Team, mówili rozwiązanie tego jest w pracach.

Odpowiedz

4

To całkiem proste - nie ma potrzeby korzystania z Sqoop. Dodaj krok Cascading Lingual w przedniej części swojej pracy, który wykonuje polecenia Redshift UNLOAD do S3:

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

Następnie można albo przetworzyć eksport bezpośrednio na S3, lub dodać krok S3DistCp przynieść dane na HDFS pierwszy.

To będzie dużo bardziej wydajne niż dodawanie Sqoop i dużo łatwiejsze w utrzymaniu.

Powiązane problemy