从 AWS S3 复制到 <Snowflake table>
Posted
技术标签:
【中文标题】从 AWS S3 复制到 <Snowflake table>【英文标题】:COPY INTO <Snowflake table> from AWS S3 【发布时间】:2022-01-24 07:06:36 【问题描述】:当我们运行“从 AWS S3 位置复制到”命令时,数据文件是否会物理地从 S3 复制到 EC2-VM-Storage (SSD/Ram)?还是数据仍驻留在 S3 上并转换为雪花格式?
而且,如果我运行 copy Into 然后暂停仓库,我会在恢复时丢失数据吗?
如果您需要任何其他信息,请告诉我。
【问题讨论】:
【参考方案1】:数据从 S3 等外部位置加载到 Snowflake 表中。这些文件仍将存在于 S3 上,如果需要在复制操作后删除这些文件,则可以使用“PURGE=TRUE”参数和“COPY INTO”命令。
这样的文件将位于 S3 位置,其中的值将复制到 Snowflake 中的表中。
即使 WH 关闭并允许完成,正在运行的仓库操作也不受影响。因此,事件中没有数据丢失。
【讨论】:
感谢您的回复 Srinath。我仍然不清楚数据被复制到哪里?数据是否被物理复制到创建集群的 EC2 机器的内部存储中?还是物理数据仍然保留在另一个 s3 位置,只是被转换为雪花格式。 数据被物理复制到SF端,文件保留在外部阶段。然后要从外部存储中清除此文件,如前所述,您可以将 PURGE=true 参数与 COPY INTO 命令一起使用。【参考方案2】:当我们运行“从 AWS S3 位置复制到”命令时,Snowflake 会将数据文件从您的 S3 位置复制到 Snowflake S3 存储。 Snowflake S3 位置只能通过查询您已在其中加载数据的表来访问。
当您暂停一个仓库时,Snowflake 会立即关闭该仓库的所有空闲计算资源,但允许任何正在执行语句的计算资源继续运行,直到语句完成,此时资源处于关闭,仓库状态变为“暂停”。等待关闭的计算资源被视为处于“静默”模式。
更多详情:https://docs.snowflake.com/en/user-guide/warehouses-tasks.html#suspending-a-warehouse
有关您使用的加载机制的详细信息在文档中:https://docs.snowflake.com/en/user-guide/data-load-s3.html#bulk-loading-from-amazon-s3
【讨论】:
以上是关于从 AWS S3 复制到 <Snowflake table>的主要内容,如果未能解决你的问题,请参考以下文章
将数据从 AWS S3 复制到 Aurora Postgres
AWS:使用从 s3 到 redshift 的复制命令时没有插入任何内容