当从amazon redshift将表卸载到s3时,如何使它只生成一个文件

时间:2013-08-14 05:28:47

标签: amazon-s3 amazon-redshift

当我从亚马逊红移到S3卸载一张桌子时,无论桌子有多小,它都会将桌子分成两部分。我已经阅读了关于卸载的redshift文档,但除了它之外没有其他答案说有时会拆分表(我从未见过它没有这样做)。我有两个问题:

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

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

3 个答案:

答案 0 :(得分:4)

亚马逊最近在UNLOAD语句中使用PARALLEL OFF添加了对卸载到单个文件的支持。请注意,如果文件大于6.2GB,您仍然可以使用多个文件。

答案 1 :(得分:1)

截至2014年5月6日,UNLOAD次查询支持新的PARALLEL选项。传递PARALLEL OFF将输出单个文件如果您的数据少于6.2 gigs(数据被分成6.2 GB块)。

答案 2 :(得分: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,并且当添加更多节点或更强大的节点时,它会变大。