Tod*_*odd 6 amazon-web-services amazon-redshift
我正在运行Redshift卸载命令,但我没有得到我想要的名字.命令是:
UNLOAD ('select * from foo')
TO 's3://mybucket/foo'
CREDENTIALS 'xxxxxx'
GZIP
NULL AS 'NULL'
DELIMITER as '\t'
allowoverwrite
parallel off
Run Code Online (Sandbox Code Playgroud)
结果是mybucket/foo-000.gz.我不希望切片编号是文件名的末尾(如果可以完全删除它会很棒),我想在文件名末尾添加文件扩展名.我想看到以下任何一种情况:
有没有办法做到这一点(没有编写lambda post process renamer脚本)?
Sla*_*ser 13
TL; DR
No.
说明:
正如在Amazon Redshift UNLOAD文档中所述,如果您不希望将其拆分为多个部分,则可以使用PARALLEL FALSE,但强烈建议将其保留为启用状态.即使这样,文件也将始终包含000.[EXT]后缀([EXT]只有在启用压缩时才存在),因为Redshift可以输出的文件大小有限,如文档中所述:
默认情况下,UNLOAD根据群集中的切片数将数据并行写入多个文件.默认选项为ON或TRUE.如果PARALLEL为OFF或FALSE,则UNLOAD按顺序写入一个或多个数据文件,根据ORDER BY子句绝对排序(如果使用).数据文件的最大大小为6.2 GB.因此,例如,如果卸载13.4 GB的数据,UNLOAD将创建以下三个文件.
Run Code Online (Sandbox Code Playgroud)s3://mybucket/key000 6.2 GB s3://mybucket/key001 6.2 GB s3://mybucket/key002 1.0 GB
因此,它000总是至少添加前缀,因为Redshift首先不知道他将输出的文件大小,所以他添加了这个后缀,以防输出达到6.2 GB的大小.
如果你问为什么PARALLEL FALSE不推荐使用,我会尝试在几个方面解释它:
PARALLEL位于Redshift时卸载数据时TRUE,它将创建至少X个文件,当X是您选择构建Redshift集群的节点数时,首先.这意味着,数据直接从数据节点本身写入,这要快得多,因为它并行执行并跳过领导节点.COPY和UNLOAD数据节点直接工作,它们的行为方式与您使用的方式几乎相同PARALLEL TRUE.在此相反,查询一样SELECT,UPDATE,DELETE和INSERT,由领导节点进行处理,这就是为什么他们从领导节点负载受到影响.| 归档时间: |
|
| 查看次数: |
2961 次 |
| 最近记录: |