5

当我将表从 amazon redshift 卸载到 S3 时,无论表有多小,它总是将表分成两部分。我已经阅读了有关卸载的 redshift 文档,但除了它说有时它会拆分表之外没有其他答案(我从未见过它不这样做)。我有两个问题:

  • 有没有人见过只创建一个文件的情况?

  • 有没有办法强制红移卸载到单个文件中?

4

3 回答 3

4

Amazon recently added support for unloading to a single file by using PARALLEL OFF in the UNLOAD statement. Note that you still can end up with more than one file if it is bigger than 6.2GB.

于 2014-05-16T21:53:04.273 回答
1

自 2014 年 5 月 6 日起,UNLOAD查询支持新PARALLEL选项。如果您的数据小于 6.2 gigs(数据分为 6.2 GB 块),则传递PARALLEL OFF将输出单个文件。

于 2014-06-06T16:53:27.213 回答
0

默认情况下,每个切片都会创建一个文件(如下说明)。有一种已知的解决方法——LIMIT在最外层的查询中添加一个将强制领导节点处理整个响应——因此它只会创建一个文件。

SELECT * FROM (YOUR_QUERY) LIMIT 2147483647;

这仅在您的内部查询返回少于 2^31 - 1 条记录时才有效,因为LIMIT子句采用无符号整数参数。

文件是如何创建的?http://docs.aws.amazon.com/redshift/latest/dg/t_Unloading_tables.html

Amazon Redshift 将 select 语句的结果拆分到一组文件中,每个节点切片一个或多个文件,以简化数据的并行重新加载。

所以现在我们知道每个切片至少创建一个文件。但什么是切片?http://docs.aws.amazon.com/redshift/latest/dg/t_Distributing_data.html

片的数量等于节点上的处理器内核数。例如,每个 XL 计算节点有两个切片,每个 8XL 计算节点有 16 个切片。

看起来最小切片数是2,当添加更多节点或更强大的节点时它会变得更大。

于 2013-08-14T07:35:12.123 回答