首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我能在Rhadoop的mapreduce作业中使用readLines吗?

我能在Rhadoop的mapreduce作业中使用readLines吗?
EN

Stack Overflow用户
提问于 2015-07-17 08:19:24
回答 1查看 71关注 0票数 2

我试图从HDFS读取文本或gz文件并运行一个简单的mapreduce作业(实际上只是地图作业),但得到了错误,似乎readLines部分无法工作。我正在寻找是否可以在mapreduce中使用readLines函数的答案。ps。如果我只是使用readLines函数在mapreduce任务之外解析HDFS文件,这是没有问题的。谢谢。

代码语言:javascript
复制
counts <- function(path){
        ct.map <- function(., lines) {
        line <- readLines(lines)
        word <- unlist(strsplit(line, pattern = " "))
        keyval(word, 1)
    }

    mapreduce(
    input = path,
    input.format = "text",
    map = ct.map
        )
}
counts("/user/ychen/100.txt")
EN

回答 1

Stack Overflow用户

发布于 2015-07-23 11:20:08

不是这样的-映射函数期望dfs格式的数据进入。你可以像这样重写你的函数,在输入步骤中格式化:

代码语言:javascript
复制
counts <- function(path){
  ct.map <- function(.,line) {
    word <- unlist(strsplit(line, split = " "))
    keyval(word, 1)
  }

  mapreduce(
    input = to.dfs(readLines(path)),
    map = function(k,v){ct.map(k,v)},
    reduce = function(k,v){keyval(k,length(v))}
  )
}
output<-from.dfs(counts("/user/ychen/100.txt"))

我还添加了一个reduce步骤,对这些值求和。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31466632

复制
相关文章

相似问题

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