2013-08-14 5 views
5

Po rozładowaniu tabeli z amazon redshift na S3, zawsze dzieli on tabelę na dwie części, bez względu na to, jak mała jest tabela. Przeczytałem dokumentację redshift dotyczącą rozładunku, ale nie ma odpowiedzi poza tym, że czasami dzieli ona stół (nigdy go nie widziałem). Mam dwa pytania:przy rozładowywaniu tabeli z amazon redshift na s3, jak sprawić, by generował tylko jeden plik

  • Czy ktoś widział przypadek, w którym tworzony jest tylko jeden plik?

  • Czy istnieje sposób, aby wymusić przesunięcie ku czerwieni do rozładunku w jeden plik?

Odpowiedz

4

Amazon ostatnio dodał obsługę rozładunku do pojedynczego pliku przy użyciu PARALLEL OFF w instrukcji UNLOAD. Pamiętaj, że nadal możesz otrzymać więcej niż jeden plik, jeśli jest większy niż 6.2 GB.

0

Domyślnie każdy plasterek tworzy jeden plik (wyjaśnienie poniżej). Znany jest sposób obejścia tego problemu - dodanie LIMIT do najbardziej zewnętrznego zapytania zmusi węzeł wiodący do przetworzenia całej odpowiedzi - w ten sposób utworzy tylko jeden plik.

SELECT * FROM (YOUR_QUERY) LIMIT 2147483647; 

ta działa tylko tak długo, jak wewnętrzna zapytanie zwraca mniej niż 2^31 - 1 rekordów, jako LIMIT klauzula bierze całkowitą bez znaku argumentu.

W jaki sposób tworzone są pliki? http://docs.aws.amazon.com/redshift/latest/dg/t_Unloading_tables.html

Amazon Redshift splits the results of a select statement across a set of files, one or more files per node slice, to simplify parallel reloading of the data.

Więc teraz wiemy, że co najmniej jeden plik na plaster jest tworzony. Ale czym jest plaster? http://docs.aws.amazon.com/redshift/latest/dg/t_Distributing_data.html

The number of slices is equal to the number of processor cores on the node. For example, each XL compute node has two slices, and each 8XL compute node has 16 slices.

Wydaje się, że minimalna liczba wynosi 2 kromki i będzie rosnąć większa, gdy więcej węzłów lub bardziej potężne węzły dodaje.

+0

Próbowałem użyć "select ... limit" w klauzuli unload, mówi "ERROR: Klauzula limitu nie jest obsługiwana" – ciphor

+0

@ciphor, to coś nowego, może jakieś zmiany na 1 grudnia? Przetestowałem że owijanie wszystko wewnątrz innej kwerendy select * from() działa, ale nie spędza dużo czasu na to - wiem, że mam jeden plik, ale na jak długo to będzie działać? Nie mam pojęcia ... –

+0

@TomaszTybulewicz Czy masz link Dokumentacja dla Twojego komentarza na temat korzystania limit życie tylko węzeł lidera zrobić przetwarzania i 2^31-1 rekordy? Nie mogę znaleźć go nigdzie w dokumentach. –

1

Od 6 maja 2014 r. UNLOAD zapytania obsługują nowe opcje PARALLEL. Przechodząc PARALLEL OFF wyjście będzie jednym pliku jeśli dane jest mniejsza niż 6,2 koncerty (dane są podzielone na kawałki 6,2 GB).