r - 将原始格式的压缩 CSV 文件中的数据直接读取到内存中?
问题描述
问题:
我有一个从以压缩 CSV 文件格式存储的 S3 存储桶中提取的数据集。数据来自 S3 API 作为原始向量,然后我将其保存为文件,然后从该文件中读取数据。
有没有一种方法可以直接从原始向量中读取数据而无需编写这些临时文件?
当前代码:
# Import packages -------------------------------------------------------------
library(paws)
# Set up S3 access ------------------------------------------------------------
s3 <- paws::s3()
aws_s3_bucket <- Sys.getenv("AWS_S3_BUCKET")
# Fetch dataset from S3 which returns a raw vector ----------------------------
s3_object <- s3$get_object(Bucket = aws_s3_bucket, Key = "data.csv.gz")
s3_object_body <- s3_object$Body
# Write the raw vector to a temporary file (This is what I want to remove) ----
file_name <- "s3_files/mydataset.csv.gz"
if (file.exists(file_name)) { unlink(file_name) }
writeBin(s3_object_body, con = file_name)
# Finally, read the data from the file ----------------------------------------
data <- data.table::fread(file_name)
一些没有奏效的尝试:
尝试readr::read_csv(s3_object_body)
导致以下错误:
Error in vroom_(file, delim = delim %||% col_types$delim, col_names = col_names, :
embedded nul in string: '\037<U+008B>\b\b<f1>7\aa\002<ff>data.csv'
尝试iotools::read.csv.raw(s3_object_body)
导致以下错误:
Error in isOpen(con, "rb") : unimplemented type 'raw' in 'asInteger'
解决方案
推荐阅读
- python - tkinter、pandas 和 python,怎么做
- javascript - TypeError:无法读取属性“错误”和 TypeError:无法获取
- oracle - oracle测试函数,包含带有sql developer的游标
- powershell - 将 webp 转换为 PowerShell 中的同一目录
- android - Android Compose setupWithNavController
- java - Java 中的扫描器下一个方法
- java - Spring Boot:允许特定服务以避免安全性
- javascript - 从 map 方法返回一个函数数组而不执行
- c# - 通过取自 WPF DataGrid 的 ID 选择 Revit 元素
- c++ - 从地图打印的问题
在 C++ 中