【问题标题】:what is the difference between 'abs' function in R and sparkRR和sparkR中的'abs'函数有什么区别
【发布时间】:2015-12-17 08:09:32
【问题描述】:

在 sparkR API 中有与 R 中同名的函数。其中一些示例是 abs,cosine 函数。

R 和 sparkR 中的 abs 函数有什么区别。 spark中的abs函数什么时候执行?

sparkR abs 函数的文档 http://spark.apache.org/docs/latest/api/R/abs.html

【问题讨论】:

  • 我相信this link 可能会引起您的兴趣,因为它讨论了当您有两个具有相同名称的函数包时会发生什么(在本例中为baseRsparkR)。

标签: r apache-spark sparkr


【解决方案1】:

不同之处在于函数所在的位置。

在基础 R 中,abs 是一个原语:

function(x) .Primitive("abs")

在 Spark 中,abs 是对 Spark 引擎调用的封装:

setMethod("abs",
          signature(x = "Column"),
          function(x) {
            jc <- callJStatic("org.apache.spark.sql.functions", "abs", x@jc)
            column(jc)
          })

您可以查看 SparkR 包 here 的 R 源代码。

【讨论】:

  • 有没有办法知道函数在哪里执行?我的意思是在本地 R 进程或火花中
  • @DesirePRG 我想只有涉及像 callJStatic 这样的调用的函数才能在 Spark 本身中运行,但我自己不是 Spark 用户,所以不要引用我的话。
【解决方案2】:

在base R中,它可以应用于任何向量,但在SparkR中,它只能应用于列。假设你有一个数据框并且C3列是双倍的,你可以使用以下代码将一列C4添加到数据框,这是 C3 的绝对值。

df$C4 <- abs(df$C3)

withColumn(df,"absvalue",abs(df&C3))

我认为 base R 和 SparkR 最大的区别在于,在 SparkR 中,您可以进行的最小单位是列,而不是向量或矩阵。我只是SparkR的新手,还在学习中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-02
    • 2016-01-10
    • 1970-01-01
    • 2011-08-12
    • 2021-02-23
    • 2015-08-09
    • 2010-11-19
    相关资源
    最近更新 更多