【问题标题】:Sorting Data using RHadoop使用 RHadoop 对数据进行排序
【发布时间】:2015-05-25 16:10:09
【问题描述】:

我是 Hadoop 和 RHadoop 的新手。因此,尝试使用 RHadoop 对 Mapreduce 结构中的数据进行排序。但我无法对数据进行排序。代码如下。任何人都可以帮我找出我在哪里犯了错误。尝试这个问题的原因是想知道如何定义键变量和值变量。

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)

非常感谢!

【问题讨论】:

    标签: rhadoop


    【解决方案1】:

    从您的问题中不清楚您到底想对什么进行排序。从您的代码中可以看出,您正在尝试对每个键中的值('small.ints')进行排序。

    Reducer 对每个键的数据集进行操作。在您的情况下,您有 100 行键和值,并且所有键行都是唯一的(因为 data = sample(1:100, 100, replace = F),本质上 'data' 是随机顺序的 1:100)。

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

    如果您想让数据集按“数据”排序,那么我认为映射器应该是:

    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)
    

    【讨论】:

    • 感谢埃兰米!你的回答真的很有帮助。实际上,我是 RHadoop 的新手,只是在玩它。所以想到了如何在 RHadoop 中对数据进行排序。
    猜你喜欢
    • 1970-01-01
    • 2017-05-18
    • 2022-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-10
    • 2020-04-17
    • 1970-01-01
    相关资源
    最近更新 更多