Amazon Redshift
数据库开发人员指南 (API Version 2012-12-01)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

将数据拆分成多个文件

您可以从单个文件加载表数据,也可以将每个表的数据拆分成多个文件。COPY 命令可以从多个文件并行加载数据。您可以通过指定一个通用前缀(对于集合,则为前缀键),或通过在清单文件中明确列出文件,从而加载多个文件。

注意

我们强烈建议您将数据拆分成多个文件,以便利用并行处理。

将数据拆分成多个文件,以便文件数是您的集群中的切片数的倍数。这样,Amazon Redshift 就可以在切片之间均匀地拆分数据。每个节点的切片数取决于集群的节点大小。例如,每个 DS1.XL 计算节点有两个切片,每个 DS1.8XL 计算节点有 32 个切片。有关每个节点大小具有的切片数的更多信息,请转到 Amazon Redshift Cluster Management Guide 中的关于集群和节点

所有节点均参与并行查询执行,处理尽可能跨切片均匀分布的数据。如果您的集群有两个 DS1.XL 节点,则可以将数据拆分为四个文件或四的倍数的文件。在拆分工作负载时,Amazon Redshift 不会考虑文件大小,因此您需要确保文件大小大致相同,压缩后的大小介于 1 MB 和 1 GB 之间。

如果您打算使用对象前缀来标识加载文件,为每个文件命名时请加上一个通用前缀。例如,venue.txt 文件可拆分成四个文件,如下所示:

Copy
venue.txt.1 venue.txt.2 venue.txt.3 venue.txt.4

如果您在存储桶中的一个文件夹中放置多个文件,则可以将该文件夹名称指定为前缀,COPY 将会加载该文件夹中的所有文件。如果您使用清单文件明确列出要加载的文件,则这些文件可以位于不同的存储桶或文件夹中。