6

Próbuję skopiować kilka plików CSV z S3 na Redshift za pomocą RedShiftCopyActivity i datapipeline.AWS Datapipeline RedShiftCopyActivity - jak określić "kolumny"

Działa to dobrze, o ile struktura CSV pasuje do struktury tabeli. W moim przypadku csv ma ​​mniej kolumn niż tabela, a następnie awarie RedShiftCopyActivity z błędem "Delimiter not found" w stl_load_errors.

Chciałbym użyć opcji "kolumny" polecenia kopiowania redshift. W ten sposób mogę sprawić, żeby działało, ale część kolumnowa polecenia redshift copy nie jest dostępna w RedShiftCopyActivity.

Czy ktoś ma jakieś sugestie?

Wszystkie wskazówki są mile widziane.

Wielkie dzięki z góry.

Peter

+0

Czy kiedykolwiek znalazłeś rozwiązanie tego problemu? – Erve1879

+1

Brak rozwiązania. Udało nam się uniknąć problemu, opracowując skrypt python uruchamiany przez potok i wywołujący polecenie redshift copy. Mniej elegancki niż bym chciał, ale przynajmniej działa. – Peter

+0

Dzięki @Peter. Tak się składa, że ​​właśnie napisałem skrypt w języku Python, który zastąpił cały potok danych. Miał niekończące się problemy z konsolą redshiftCopyActivity i Data Pipeline. – Erve1879

Odpowiedz

1

wiem, że to jest stare pytanie, ale teraz można określić listę kolumn do polecenia Redshift kopiowania.

COPY tablename (column1 [,column2, ...]) 

Podczas ładowania danych z S3 kolejność kolumn musi być zgodna z kolejnością danych źródłowych. Sprawdź dokumentację tutaj: Amazon Redshift Column Mapping Options.

Radu

+0

Dzięki za poinformowanie mnie Radu. Zrezygnowaliśmy z DataPipeLine i napisaliśmy skrypt Pythona. Na razie działa na instancji EC2, ale myślę, że możemy rozważyć przejście na lambdę. – Peter

+0

Istnieje naprawdę dobry wpis na blogu na Amazon Redshift i Lambda. Używamy już tego i działa jak urok. Powinieneś to sprawdzić: [A Zero-Administration Amazon Redshift Database Loader] (https://blogs.aws.amazon.com/bigdata/post/Tx24VJ6XF1JVJAA/A-Zero-Administration-Amazon-Redshift-Database-Loader) –

+0

Dzięki za wskazówkę! – Peter