文档首页/ 数据湖探索 DLI/ 常见问题/ SQL作业类/ SQL作业运维类/ LOAD数据到OBS外表报错:IllegalArgumentException: Buffer size too small. size
更新时间:2024-12-10 GMT+08:00

LOAD数据到OBS外表报错:IllegalArgumentException: Buffer size too small. size

问题描述

在Spark SQL作业中,使用LOAD DATA命令导入数据到DLI表中时报如下错误:

error.DLI.0001: IllegalArgumentException: Buffer size too small. size = 262144 needed = 2272881
或者如下错误
error.DLI.0999: InvalidProtocolBufferException: EOF in compressed stream footer position: 3 length: 479 range: 0 offset: 3 limit: 479 range 0 = 0 to 479 while trying to read 143805 bytes

问题原因

上述报错可能原因是当前导入的文件数据量较大,同时因为spark.sql.shuffle.partitions参数设置的并行度过大,导致缓存区大小不够而导入数据报错。

解决方案

建议可以尝试调小spark.sql.shuffle.partitions参数值来解决缓冲区不足问题。具体该参数设置步骤如下:

  1. 登录DLI管理控制台,单击“作业管理 > SQL作业”,对应SQL作业行的操作列,单击“编辑”按钮,跳转到“SQL编辑器”。
  2. 在“SQL编辑器”中,单击“设置”,参考如下图配置添加参数。
    图1 设置参数
  3. 重新执行作业。