我尝试执行一个从HDFS读取文本文件的Job,并计算SparkR中每个句子中的单词数。它在少量数据上运行得非常好,但是当我将数据大小增加到大约1GB时就失败了。
input <- read.text(inFile)
count <- function(text) {
value <- apply(text, 1, function(line) {
splits <- strsplit(line, "\\W+")[[1]]
t <- length(splits)
return(as.character(t))
})
return(data.frame(value, stringsAsFactors=FALSE))
}
count_schema <- structType(structField("value", "string"))
splitText <- dapply(input, count, count_schema)
write.df(splitText, outFile, source="csv", mode = "overwrite")
约1小时后作业失败,并显示以下错误消息:
17/04/19 17:58:39 ERROR FileFormatWriter: Aborting job null.
接着是
17/04/19 17:58:39 ERROR LiveListenerBus: SparkListenerBus has already stopped! Dropping event SparkListenerSQLExecutionEnd(0,1492617519955)
17/04/19 17:58:39 ERROR RBackendHandler: csv on 12 failed
我尝试使用简单的 text , csv 和镶木地板作为输出格式,但都失败并出现同样的错误。
我是否指定了错误的输出或我的dapply UDF出了什么问题?