R中的'abs'函数和sparkR之间有什么区别?

时间:2015-09-21 05:02:15

标签: r apache-spark sparkr

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

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

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

2 个答案:

答案 0 :(得分:4)

不同之处在于功能的存在。

在基数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包{R-3}}的R源代码。

答案 1 :(得分:0)

在基础R中,它可以应用于任何向量,但在SparkR中,它只能应用于columns.Suppose你有一个数据框,C3列是double,你可以使用下面的代码将一列C4添加到数据框,这是C3的绝对值。

df$C4 <- abs(df$C3)

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

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