2013-08-14 20 views
5

Khi tôi dỡ bảng từ amazon redshift sang S3, nó luôn chia bảng thành hai phần bất kể bảng nhỏ thế nào. Tôi đã đọc các tài liệu redshift liên quan đến dỡ hàng, nhưng không có câu trả lời khác hơn là nó nói đôi khi nó chia bảng (tôi đã không bao giờ nhìn thấy nó không làm điều đó). Tôi có hai câu hỏi:khi dỡ một bảng từ amazon redshift sang s3, làm cách nào để làm cho nó tạo ra chỉ một tệp

  • Có ai từng thấy một trường hợp chỉ có một tệp được tạo không?

  • Có cách nào để buộc chuyển sang tải xuống thành một tệp không?

Trả lời

4

Amazon gần đây đã thêm hỗ trợ để tải xuống một tệp bằng cách sử dụng PARALLEL TẮT trong tuyên bố UNLOAD. Lưu ý rằng bạn vẫn có thể kết thúc với nhiều hơn một tập tin nếu nó lớn hơn 6.2GB.

0

Theo mặc định, mỗi lát sẽ tạo một tệp (giải thích bên dưới). Có một giải pháp đã biết - thêm một LIMIT vào truy vấn ngoài cùng sẽ buộc nút dẫn đầu xử lý toàn bộ phản hồi - do đó nó sẽ chỉ tạo một tệp.

SELECT * FROM (YOUR_QUERY) LIMIT 2147483647; 

này chỉ hoạt động chừng nào truy vấn bên trong của bạn trả ít hơn 2^31-1 hồ sơ, như một điều khoản LIMIT có một đối số nguyên unsigned.

Cách tạo tệp? 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.

Bây giờ chúng tôi biết rằng ít nhất một tệp trên mỗi lát được tạo. Nhưng một lát là gì? 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.

Dường như số lượng lát tối thiểu là 2 và sẽ lớn hơn khi thêm nhiều nút hoặc nhiều nút mạnh hơn.

+0

Tôi đã cố gắng sử dụng "chọn ... giới hạn" trong mệnh đề dỡ hàng, nó nói "L ERI: Điều khoản giới hạn không được hỗ trợ" – ciphor

+0

@ciphor, đó là điều gì đó mới mẻ, có thể thay đổi vào ngày 1 tháng 12? Tôi đã thử nghiệm rằng gói tất cả các truy vấn bên trong một SELECT * FROM() đang hoạt động, nhưng tôi không dành nhiều thời gian cho điều đó - tôi biết rằng tôi có một tệp duy nhất, nhưng nó sẽ hoạt động trong bao lâu? Tôi không có ý tưởng ... –

+0

@TomaszTybulewicz Bạn có một liên kết tài liệu cho nhận xét của bạn về việc sử dụng LIMIT để chỉ buộc nút dẫn đầu thực hiện quá trình xử lý và bản ghi 2^31-1 không? Tôi dường như không thể tìm thấy nó ở bất cứ đâu trong tài liệu. –

1

Kể từ ngày 6 tháng 5 năm 2014 UNLOAD truy vấn hỗ trợ tùy chọn PARALLEL mới. Việc chuyển PARALLEL OFF sẽ xuất ra một tệp nếu dữ liệu của bạn dưới 6.2 biểu đồ (dữ liệu được chia thành các khối 6,2 GB).