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

如何用R语言的arrow包读取分号分隔的大型CSV文件?

使用Arrow包读取分号分隔的大体积CSV文件

Arrow的read_csv函数虽然没有直接对应readr::read_csv2的封装,但可以通过自定义参数实现完全相同的功能,同时保留Arrow针对大文件的高性能读取优势:

基础用法

直接指定分隔符为分号,并根据你的CSV格式设置小数分隔符(通常read_csv2默认用逗号作为小数标记):

library(arrow)

# 读取分号分隔、逗号为小数标记的CSV
large_df <- read_csv(
  file = "your_millions_rows.csv",
  delimiter = ";",
  decimal_point = ","
)

性能优化技巧

针对数百万行的超大文件,可通过以下参数进一步提升读取速度:

  • 提前指定列类型:避免Arrow自动推断列类型的耗时操作,用schema()定义列结构
  • 启用内存映射:设置memory_map = TRUE,让Arrow直接从磁盘读取数据,减少内存占用
  • 跳过无关行:如果文件有注释或非数据行,用skip参数跳过

示例代码:

# 自定义列类型 schema
csv_schema <- schema(
  user_id = int64(),
  transaction_amount = float64(),
  transaction_date = date32(),
  product_category = string()
)

# 优化后的读取方式
large_df <- read_csv(
  file = "your_millions_rows.csv",
  delimiter = ";",
  decimal_point = ",",
  col_types = csv_schema,
  memory_map = TRUE,
  skip = 0 # 若第一行是表头则保持默认,否则设置对应行数
)

额外说明

Arrow的CSV读取引擎原生支持大文件分块读取,即使是数百万行的数据,也能高效处理,同时兼容各种CSV格式细节(如引号转义、空值处理等),无需额外配置即可适配常见的read_csv2场景。

内容的提问来源于stack exchange,提问作者Bastián Olea Herrera

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 14:42:38