Сортировка данных с помощью RHadoop

Я новичок в Hadoop и RHadoop. Итак, пытался отсортировать данные в структуре Mapreduce с помощью RHadoop. Но я не могу отсортировать данные. Код приведен ниже. Может кто-нибудь, пожалуйста, помогите мне выяснить, где я делаю ошибку. Причина для решения этой проблемы заключается в том, чтобы узнать, как определить ключевую переменную и переменную значения.

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)

Большое спасибо!


person Beta    schedule 22.03.2015    source источник


Ответы (1)


Из вашего вопроса не ясно, что именно вы пытаетесь отсортировать. Из вашего кода видно, что вы пытаетесь отсортировать значения («small.ints») в каждом ключе.

Редуктор работает с набором данных для каждого ключа. В вашем случае у вас есть 100 строк для ключей и значений, и все ключевые строки уникальны (поскольку данные = образец (1: 100, 100, замена = F), по существу, «данные» равны 1: 100 в случайном порядке).

Это означает, что для каждого ключа у вас есть только одно значение. Неважно, как вы его сортируете, порядок всегда будет один и тот же: 12 = сортировка (12) = сортировка (12, уменьшение = ИСТИНА).

Если вы хотите, чтобы набор данных был отсортирован по «данным», то я думаю, что картограф должен быть:

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)
person elanmi    schedule 11.05.2015
comment
Спасибо, эланми! Ваш ответ был действительно полезен. На самом деле я новичок в RHadoop и просто играл с ним. Вот и подумал, как мне отсортировать данные в RHadoop. - person Beta; 12.05.2015