如何解决Snowflake:复制命令在卸载时不会为多个文件生成恒定大小
从以下位置复制到@ elasticsearch / product / s3文件: 来自mytable的object_construct(*))file_format =(type = json, COMPRESSION = NONE),overwrite = TRUE,single = False, max_file_size = 5368709120;
该表具有2GB的数据。 我想将它们拆分为100mb的文件以存储在S3中,但是s3将它们拆分为文件大小不均。 预期有多个100MB的文件
我需要提高性能以在弹性搜索中建立索引,我正在使用smart_open进行多处理。因此处理文件会很方便。 谢谢
解决方法
如果每列中的每个值都完全相同,则只有相同的文件大小。
例如,如果您的表具有firstname和lastname列,并且一条记录的值为“ John”“ Smith”,而另一条记录的值为“ Michael”“ Gardner”,那么,如果每条记录都写入不同的文件,由于John与Michael的大小不同,而Smith与Gardner的大小不同,因此生成的JSON文件的大小也将不同。
您还只能控制文件的最大大小,而不能控制实际文件的大小。如果您已将10条记录写入一个文件,导致文件大小为950Mb,那么如果下一条记录的大小为100Mb,则会将其写入新文件,并且原始记录仍为950Mb
,它不是 S3 拆分文件,它的雪花 wharehosue 大小拆分文件,就像您在复制命令中使用 SINGLE=False 一样。随着 WH 大小的增加,文件数量将增加
示例 假设您使用 XS 大小 wh 运行查询,它会在 s3 上生成 8 个文件,如果您使用 M 大小 WH,那么它将在 s3 上创建 16 个文件。并且它的拆分以并行模式发生,因此每个文件的大小可能会有所不同。它不像创建具有复制命令中给出的最大限制的文件,然后启动另一个文件。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。