【问题标题】:Simple SparkR dapply example not working简单的 SparkR dapply 示例不起作用
【发布时间】:2016-08-18 00:58:39
【问题描述】:

我正在尝试编写一个非常简单的 SparkR 程序,它使用 dapply 来转换一条线。但是,我无法运行它:

lines <- read.text("/path/to/file.txt")

resultingSchema <- structType(structField("line", "string"))

linesmapped <- dapply(lines, function(line) {
    y <- list()
    y[[1]] <- paste(line[[1]], "1", sep = ":")    
}, resultingSchema)

head(linesmapped)

这是我得到的错误:

Error in split.default(output, seq(nrow(output))) :
  group length is 0 but data length > 0
    at org.apache.spark.api.r.RRunner.compute(RRunner.scala:108)
    at org.apache.spark.sql.execution.r.MapPartitionsRWrapper.apply(MapPartitionsRWrapper.scala:59)
    at org.apache.spark.sql.execution.r.MapPartitionsRWrapper.apply(MapPartitionsRWrapper.scala:29)
    at org.apache.spark.sql.execution.MapPartitionsExec$$anonfun$6.apply(objects.scala:178)
    at org.apache.spark.sql.execution.MapPartitionsExec$$anonfun$6.apply(objects.scala:175)

【问题讨论】:

    标签: r apache-spark sparkr


    【解决方案1】:

    我犯了太多基本错误。我希望这对其他人有用(因为目前 SparkR 文档非常稀少):

    lines <- read.text("/path/to/file.txt")
    resultingSchema <- structType(structField("value", "string"))
    
    ldf <- dapply(lines, function(x) {    
        x <- transform(x, value=paste(value, "$", sep=""))
    }, resultingSchema)
    
    head(collect(ldf))
    

    【讨论】:

      【解决方案2】:

      dapply 的基本功能是记住 dapply 中的函数需要一个数据帧,并且输出也将是一个数据帧。

      因此,请考虑将分区作为原生 R 数据帧传递给 dapply 函数并相应地应用函数。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-08
        • 1970-01-01
        • 2012-07-01
        • 2015-11-23
        • 2016-03-02
        • 1970-01-01
        相关资源
        最近更新 更多