R 的可扩展数据处理
Simon Urbanek
Member of R-Core, Lead Inventive Scientist, AT&T Labs Research
iotools 是 hmr 的基础,可在 Apache Hadoop 基础设施上处理数据# 使用 chunk.apply 从 foo.csv 获取按行分块 chunk_col_sums <- chunk.apply("foo.csv",# 处理每个分块的函数 function(chunk) { # 将分块转为矩阵 m <- mstrsplit(chunk, type = "numeric", sep = ",") # 返回列和 colSums(m) }, # 最大分块字节数 CH.MAX.SIZE = 1e5)# 获取总和 colSums(chunk_col_sums)
# 使用 chunk.apply 从 foo.csv 获取按行分块
chunk_col_sums <- chunk.apply("foo.csv",
# 处理每个分块的函数
function(chunk) {
# 将分块转为数据框
d <- dstrsplit(chunk, col_types = rep("numeric", 3), sep = ",")
# 返回列和
colSums(d)
},
# 最大分块字节数
CH.MAX.SIZE = 1e5)
# 获取总和
colSums(chunk_col_sums)
# 使用 chunk.apply 从 foo.csv 获取按行分块
chunk_col_sums <- chunk.apply("foo.csv",
# 处理每个分块的函数
function(chunk) {
# 将分块转为数据框
d <- dstrsplit(chunk, col_types = rep("numeric", 3), sep = ",")
colSums(d)
},
# 使用 2 个处理器读取并处理数据
CH.PARALLEL = 2)
# 获取总和
colSums(chunk_col_sums)
R 的可扩展数据处理