有没有办法在 spark 或 pyspark 中模仿 R 的高阶(二进制)函数 shorthand 语法?
Is there a way to mimic R's higher order (binary) function shorthand syntax within spark or pyspark?
在R
中,我可以这样写:
## Explicit
Reduce(function(x,y) x*y, c(1, 2, 3))
# returns 6
不过,我也可以通过以下方式不那么明确地做到这一点:
## Less explicit
Reduce(`*`, c(1, 2, 3))
# also returns 6
在 pyspark
中,我可以执行以下操作:
rdd = sc.parallelize([1, 2, 3])
rdd.reduce(lambda a, b: a * b)
问题:你能用 pyspark
或某种匿名函数模仿 R 的 Reduce('*', ...)
的 "shorthand"(不太明确)语法吗?
在 R 中,您提供了一个二元函数。乘法运算符(与所有运算符一样)实际上是一个二元函数。输入
`*`(2, 3)
看看我的意思。
在Python中,乘法等价于operator.mul
。
所以:
rdd = sc.parallelize([1, 2, 3])
rdd.reduce(operator.mul)
在R
中,我可以这样写:
## Explicit
Reduce(function(x,y) x*y, c(1, 2, 3))
# returns 6
不过,我也可以通过以下方式不那么明确地做到这一点:
## Less explicit
Reduce(`*`, c(1, 2, 3))
# also returns 6
在
pyspark
中,我可以执行以下操作:
rdd = sc.parallelize([1, 2, 3])
rdd.reduce(lambda a, b: a * b)
问题:你能用
pyspark
或某种匿名函数模仿 R 的 Reduce('*', ...)
的 "shorthand"(不太明确)语法吗?
在 R 中,您提供了一个二元函数。乘法运算符(与所有运算符一样)实际上是一个二元函数。输入
`*`(2, 3)
看看我的意思。
在Python中,乘法等价于operator.mul
。
所以:
rdd = sc.parallelize([1, 2, 3])
rdd.reduce(operator.mul)