【发布时间】:2013-08-08 05:20:54
【问题描述】:
在以下示例中:
small.ints = to.dfs(1:1000)
mapreduce(
input = small.ints,
map = function(k, v) cbind(v, v^2))
mapreduce 函数的数据输入是一个名为 small.ints 的对象,它引用 HDFS 中的块。
现在我有一个 CSV 文件已经存储在 HDFS 中了
"hdfs://172.16.1.58:8020/tmp/test_short.csv"
如何为它获取一个对象?
据我所知(这可能是错误的),如果我想要 CSV 文件中的数据作为 mapreduce 的输入,我必须首先在 R 中生成一个表,其中包含 CSV 文件中的所有值。我确实有这样的方法:
data=from.dfs("hdfs://172.16.1.58:8020/tmp/test_short.csv",make.input.format(format="csv",sep=","))
mydata=data$val
用这个方法获取mydata,然后做object=to.dfs(mydata)好像还可以,但是问题是test_short.csv文件很大,大约TB大小,内存放不下from.dfs 的输出!!
实际上,我想知道我是否直接使用“hdfs://172.16.1.58:8020/tmp/test_short.csv”作为 mapreduce 输入,并且在 map 函数内部执行 from.dfs() 的事情,我可以吗获取数据块?
请给我一些建议,无论如何!
【问题讨论】: