首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >利用RHadoop对数据进行排序

利用RHadoop对数据进行排序
EN

Stack Overflow用户
提问于 2015-03-22 16:59:10
回答 1查看 133关注 0票数 1

我是Hadoop & RHadoop的新手。因此,试图使用RHadoop对Mapreduce结构中的数据进行排序。但我不能分类数据。代码如下所示。有人能帮我找出我在哪里犯的错误吗?尝试这个问题的原因是想知道如何定义关键变量&值变量。

代码语言:javascript
复制
small.ints=runif(100,10.0,20.0)
data<-sample(1:100,100,replace=F)
data1<-data.frame(data,small.ints)
hdfs.input = to.dfs(data1)
# Mapper
mapper <- function(k,v) {
  key <- data
  value <-small.ints
  keyval(key,value)
}

#Reducer

reducer <- function(k,v) {
  key <- k  
  value <- v
  keyval(key,arrange(v))
}
#mapreduce program
out<-mapreduce(
  input = hdfs.input,
  map = mapper,reduce=reducer)

非常感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-11 17:57:40

从你的问题中还不清楚你到底想要解决什么问题。从代码中可以看出,您试图对每个键中的值(“small.ints”)进行排序。

减速机对每个键的数据集进行操作。在您的示例中,键和值有100行,所有键行都是唯一的(因为data = sample( 1:100,100,替换= F),本质上'data‘是1:100的随机顺序)。

这意味着,对于每个键,您只有一个值。不管你用哪种方式排序,顺序总是一样的: 12 = sort(12) = sort(12,order = TRUE)。

如果您希望按“数据”对数据集进行排序,那么我认为映射程序应该是:

代码语言:javascript
复制
mapper <- function(k,v) {
  # input: key = NULL, value = (data, small.ints)
  keyval(k, arrange(v, data))
}

# mapreduce program
out <- mapreduce(
  input = hdfs.input,
  map = mapper,
  reduce = NULL)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29197216

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档