You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言arrow包读取Parquet文件遇Thrift反序列化大小限制错误求助

读取Parquet文件时遇到Thrift序列化大小限制错误

场景背景

我们机构正逐步从SAS迁移至R,多数代码采用arrow/dplyr或data.table编写,以Parquet作为主要存储格式。日常处理100万至1000万行、150-200列的数据,Parquet格式原本适配此类场景,但近期出现异常错误。

报错代码及信息

执行以下代码时触发错误:

library(arrow)
library(tidyverse)

open_dataset(data_error)

报错内容如下:

Error in `open_dataset()`:
! IOError: Error creating dataset. Could not read schema from 'path/example.parquet'. 
Is this a 'parquet' file?: 
Could not open Parquet input source 'path/example.parquet':
Couldn't deserialize thrift: TProtocolException: Exceeded size limit

调用read_parquet函数也会出现相同错误。

数据相关说明

  • data_error是从更大数据源data_clean经若干data.table处理后,通过write_parquet无分区保存的常规data.frame
  • 关键注意点:若Parquet文件为分区存储则不会出现此错误
  • 该错误首次出现在他人编写的data.table程序中,本人对data.table底层逻辑不熟悉

复现代码

library(arrow)
library(data.table)
# 设置随机种子
set.seed(1L)
# 创建足够大的data.table 
dt = data.table(x = sample(1e5L, 1e7L, TRUE), y = runif(100L)) 
# 保存为Parquet格式
write_parquet(dt, "example_ok.parquet")
# 可正常读取
dt_ok <- open_dataset("example_ok.parquet")
# 简单过滤 
dt[x == 989L]
# 保存为Parquet格式
write_parquet(dt, "example_error.parquet")
# 出现错误
dt_error <- open_dataset("example_error.parquet")

内容的提问来源于stack exchange,提问作者cravetheflame

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 01:43:23