从Parquet加载数据时出现雪花“超出最大LOB大小(16777216)”错误

时间:2020-05-29 17:15:02

标签: snowflake-cloud-data-platform

我希望将数据从S3加载到Snowflake。我的文件为Parquet格式,是由Spark作业创建的。在S3中,我的文件夹中有199个镶木地板文件,每个文件约有5500条记录。每个镶木地板文件都经过快速压缩,约为485 kb。

我已经成功创建了存储集成并暂存了数据。但是,当我读取数据时,会收到以下消息:

Max LOB size (16777216) exceeded, actual size of parsed column is 19970365

我相信我已经遵循了General File Sizing Recommendations,但是我仍然无法找到解决此问题的方法,甚至无法清楚地说明此错误消息。

这是我的SQL查询的基础:

CREATE OR REPLACE TEMPORARY STAGE my_test_stage
            FILE_FORMAT = (TYPE = PARQUET)
            STORAGE_INTEGRATION = MY_STORAGE_INTEGRATION
            URL = 's3://my-bucket/my-folder';

SELECT $1 FROM @my_test_stage(PATTERN => '.*\\.parquet')

通过将CREATE STAGE查询中的URL参数更改为实木复合地板文件的完整路径,我似乎能够分别读取每个实木复合地板文件。我真的不想遍历每个文件来加载它们。

2 个答案:

答案 0 :(得分:1)

VARIANT数据类型对单个行施加了16 MB(压缩)的大小限制。

结果集实际上是作为虚拟列显示的,因此也适用16MB的限制

文档参考: https://docs.snowflake.com/en/user-guide/data-load-considerations-prepare.html#semi-structured-data-size-limitations

答案 1 :(得分:1)

文件中的一个或多个记录可能存在问题,请尝试使用“ ON_ERROR”选项运行copy命令,以调试所有记录是否都存在类似问题或只有几个问题。