【问题标题】:R callback functions using sparklyr使用 sparklyr 的 R 回调函数
【发布时间】:2017-02-17 11:14:32
【问题描述】:

我希望使用Spark(http://spark.apache.org/docs/latest/programming-guide.html)的mapPartitionsreduce功能,使用sparklyr

pyspark 中很容易,我唯一需要使用的是一个普通的 python 代码。我可以简单地添加 python 函数作为回调函数。很简单。

例如,在pyspark中,我可以使用这两个函数如下:

mapdata = self.rdd.mapPartitions(mycbfunc1(myparam1))
res = mapdata.reduce(mycbfunc2(myparam2))

但是,这似乎在 R 中是不可能的,例如 sparklyr 库。我检查了 RSpark,但它似乎是在 R 中查询/整理数据的另一种方式,仅此而已。

如果有人告诉我如何在 R 中使用这两个函数以及 R 回调函数,我将不胜感激。

【问题讨论】:

  • 你说得对,这还没有在sparklyr中实现。

标签: r apache-spark sparkr sparklyr


【解决方案1】:

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' 不是从'namespace:SparkR' sparkR --version 2.0.0 导出的对象 这是一个示例。 pastebin.com/i2GLVctt
  • 试试SparkR:::toRDD(self),注意三个冒号。
  • 哦,我明白了。这种方法故意使用内部函数:)
  • @Kim 请在使用此 API 之前阅读删除此 API 的 JIRA。它是内部的,因为它不够稳定并且存在许多已知的错误。
猜你喜欢
  • 2021-01-08
  • 1970-01-01
  • 2020-12-22
  • 2017-09-23
  • 2019-03-26
  • 2018-11-13
  • 2017-03-10
  • 2021-12-01
  • 2018-12-29
相关资源
最近更新 更多