在下面的例子:R + Hadoop:如何從HDFS讀取CSV文件並執行mapreduce?
small.ints = to.dfs(1:1000)
mapreduce(
input = small.ints,
map = function(k, v) cbind(v, v^2))
用於映射縮減功能的數據輸入是一個命名對象small.ints其中refered到塊HDFS。
現在我已經存儲在HDFS作爲
"hdfs://172.16.1.58:8020/tmp/test_short.csv"
如何獲得它的對象的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,然後做對象= to.dfs(MYDATA),但問題是test_short.csv文件是巨大的,這是TB大小以及內存不能保存from.dfs的輸出!
其實,我想知道如果我直接使用「hdfs://172.16.1.58:8020/tmp/test_short.csv」作爲mapreduce輸入,而內部map函數做的是from.dfs()的東西,我是能夠獲得數據塊?
請給我一些建議,不管!
哦,我沒有注意到,我可以把輸入格式中的MapReduce()說法!我讀了你的wiki,其中說to.dfs和from.dfs僅用於小數據和測試。感謝您的幫助! –