使用 RHadoop 对数据进行排序
Sorting Data using RHadoop
我是 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)
非常感谢!
从你的问题中不清楚你到底想排序什么。从您的代码看来,您正在尝试对每个键内的值 ('small.ints') 进行排序。
Reducer 对每个键的数据集进行操作。在您的情况下,您有 100 行键和值,并且所有键行都是唯一的(因为 data = sample(1:100, 100, replace = F),本质上 'data' 是 1:100顺序随机)。
这意味着对于每个键您只有一个值。不管你用哪种方式排序,顺序总是一样的:12 = sort(12) = sort(12, decrease = TRUE).
如果您希望数据集按 'data' 排序,那么我认为映射器应该是:
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)
我是 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)
非常感谢!
从你的问题中不清楚你到底想排序什么。从您的代码看来,您正在尝试对每个键内的值 ('small.ints') 进行排序。
Reducer 对每个键的数据集进行操作。在您的情况下,您有 100 行键和值,并且所有键行都是唯一的(因为 data = sample(1:100, 100, replace = F),本质上 'data' 是 1:100顺序随机)。
这意味着对于每个键您只有一个值。不管你用哪种方式排序,顺序总是一样的:12 = sort(12) = sort(12, decrease = TRUE).
如果您希望数据集按 'data' 排序,那么我认为映射器应该是:
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)