当我从亚马逊红移到S3卸载一张桌子时,无论桌子有多小,它都会将桌子分成两部分。我已经阅读了关于卸载的redshift文档,但除了它之外没有其他答案说有时会拆分表(我从未见过它没有这样做)。我有两个问题:
是否有人见过只创建一个文件的情况?
有没有办法强制将红移卸载到单个文件中?
答案 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,并且当添加更多节点或更强大的节点时,它会变大。