2016-10-08 19 views
2

я надеюсь использовать mapPartitions и уменьшают функцию Спарк (http://spark.apache.org/docs/latest/programming-guide.html), используя sparklyr.функции обратного вызова с использованием R sparklyr

Это легко в pyspark, единственное, что мне нужно использовать, это простой код на языке питона. Я могу просто добавить функции python в качестве функции обратного вызова. Так легко.

Например, в pyspark, я могу использовать эти две функции следующим образом:

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

Однако, кажется, что это не представляется возможным в R, например sparklyr библиотека. Я проверил RSpark, но, похоже, это еще один способ запроса/перебора данных в R, и ничего больше.

Я был бы признателен, если бы кто-нибудь дал мне знать, как использовать эти две функции в R, с функциями обратного вызова R.

+0

Вы правы, что это еще не реализовано в 'sparklyr'. –

ответ

0

В 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.

+0

Да, этот ответ является наиболее перспективным, но я видел ошибку, возникшую из этого. Что говорит «не экспортированная функция». > toRDD Ошибка: объект 'toRDD' не найден > SparkR :: toRDD Ошибка: 'toRDD' не экспортируемый объект из 'имен: SparkR' sparkR --version версия 2.0.0 Вот пример. http://pastebin.com/i2GLVctt – Kim

+0

попробуйте 'SparkR ::: toRDD (self)', обратите внимание на тройной двоеточие. – mtoto

+0

О, я вижу. Этот подход использует внутреннюю функцию по назначению :) – Kim

Смежные вопросы