使用sparklyr的R回调函数
我希望使用SparkyR使用mapPartitions和Spark()的reduce函数 在pyspark中很容易,我只需要使用一个简单的python代码。我可以简单地添加python函数作为回调函数。太容易了 例如,在pyspark中,我可以按如下方式使用这两个函数:使用sparklyr的R回调函数,r,apache-spark,sparkr,sparklyr,R,Apache Spark,Sparkr,Sparklyr,我希望使用SparkyR使用mapPartitions和Spark()的reduce函数 在pyspark中很容易,我只需要使用一个简单的python代码。我可以简单地添加python函数作为回调函数。太容易了 例如,在pyspark中,我可以按如下方式使用这两个函数: mapdata = self.rdd.mapPartitions(mycbfunc1(myparam1)) res = mapdata.reduce(mycbfunc2(myparam2)) 然而,这在R中似乎是不可能的,例如
mapdata = self.rdd.mapPartitions(mycbfunc1(myparam1))
res = mapdata.reduce(mycbfunc2(myparam2))
然而,这在R中似乎是不可能的,例如Sparkyr库。我检查了RSpark,但这似乎是在R中查询/处理数据的另一种方式,而不是其他方式
如果有人告诉我如何在R中使用这两个函数以及R回调函数,我将不胜感激。在
SparkR
中,您可以使用内部函数,因此前缀SparkR::
,来完成相同的任务
newRdd = SparkR:::toRDD(self)
mapdata = SparkR:::mapPartitions(newRdd, function(x) { mycbfunc1(x, myparam1)})
res = SparkR:::reduce(mapdata, function(x) { mycbfunc2(x, myparam2)})
我相信
sparklyr
只与DataFrame
/DataSet
API接口。是的,这个答案是最有希望的,但我看到了一个错误。上面写着“未导出函数”。>toRDD错误:未找到对象“toRDD”>“SparkR::toRDD错误:“toRDD”不是从“命名空间:SparkR”SparkR导出的对象--版本2.0.0以下是一个示例。试试看SparkR::toRDD(self),注意三个冒号。哦,我明白了。这种方法故意使用内部函数:)@Kim在使用此API之前,请阅读删除此API的JIRA。它是内部的,因为它不够稳定,并且存在许多已知的bug。您可以肯定,这尚未在sparklyr
中实现。