Snowflake JDBC执行SELECT语句报错:首个arrow chunk行数为null
Snowflake JDBC
Fail to retrieve row count for first arrow chunk: null 报错排查思路 驱动兼容性排查
- 首先校验当前使用的Snowflake JDBC驱动版本,3.13.x系列多个版本存在Arrow结果集解析的已知缺陷,建议直接升级到3.14.0及以上稳定版本重试
- 排查项目依赖冲突:Maven项目执行
mvn dependency:tree、Gradle项目执行gradle dependencies,确认实际加载的驱动版本和声明版本一致,排除低版本包被意外引入的问题
结果集格式参数调整
- 临时修改JDBC连接参数,追加
JDBC_QUERY_RESULT_FORMAT=JSON,强制驱动使用JSON格式拉取结果,若修改后报错消失,可确认是Arrow序列化解析模块的问题 - 调整JVM堆内存配置,增大
-Xmx参数值:Arrow chunk解析需要占用堆内存,内存不足会触发chunk解析失败返回null的问题
会话上下文校验
- 单独新建JDBC会话,不执行任何前置操作直接运行报错的
select TOP 1 EVENT_ID from snowflake.account_usage.login_history语句,验证是否是前置执行的use warehouse等语句修改了会话级参数(如时区、字符编码、结果集返回规则)导致的解析异常 - 确认JDBC会话使用的角色和Snowflake UI中测试用的角色一致,
account_usage下的视图对角色权限有明确要求,权限不足会导致结果集元数据返回异常
代码与网络排查
- 检查代码逻辑,确认执行
executeQuery之后、读取结果集之前,没有提前关闭Statement或JDBC连接,底层连接提前释放会导致结果集chunk拉取失败 - 检查JDBC连接链路中是否有代理、WAF等中间件,部分流量审计组件会截断或修改Snowflake返回的二进制Arrow数据包,导致驱动无法正常解析
- 可在JDBC连接参数中追加
TRACING=ALL开启驱动debug日志,定位chunk拉取阶段的具体错误原因
内容的提问来源于stack exchange,提问作者Sara Feraca
相关产品推荐
相关产品推荐

