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.
Nguồn
2013-08-14 07:35:12
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
@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 ... –
@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. –