SparkR vs sparklyr

Есть ли у кого-нибудь обзор относительно преимуществ / недостатков SparkR по сравнению со sparklyr? Google не дает удовлетворительных результатов, и оба кажутся довольно похожими. Испытывая оба, SparkR выглядит намного более громоздким, тогда как sparklyr довольно прост (как для установки, так и для использования, особенно с входами dplyr). Можно ли использовать sparklyr только для параллельного запуска функций dplyr или же для "нормального" R-кода?

Лучший

7 ответов

Самым большим преимуществом SparkR является возможность запуска на Spark произвольных пользовательских функций, написанных на R:

https://spark.apache.org/docs/2.0.1/sparkr.html

Поскольку sparklyr переводит R в SQL, вы можете использовать только очень небольшой набор функций в mutate заявления:

http://spark.rstudio.com/dplyr.html

Этот недостаток несколько устраняется с помощью расширений ( http://spark.rstudio.com/extensions.html).

Помимо этого, sparklyr является победителем (по моему мнению). Помимо очевидного преимущества использования знакомых dplyr функции, sparklyr имеет гораздо более полный API для MLlib ( http://spark.rstudio.com/mllib.html) и расширений, упомянутых выше.

Будучи оберткой, есть некоторые ограничения sparklyr, Например, используя copy_to() для создания кадра данных Spark столбцы в формате даты не сохраняются. С SparkR, as.Dataframe() сохраняет даты.

Для обзора и подробностей, вы можете обратиться к документации. Цитируя из документации, "пакет sparklyr предоставляет полный бэкэнд dplyr". Это говорит о том, что sparklyr НЕ является заменой оригинальной Apache-искры, а является ее расширением.

Продолжая далее, поговорим о его установке (я пользователь Windows) на автономный компьютер, вам нужно будет либо загрузить и установить новую версию RStudio Preview, либо выполнить следующие серии команд в оболочке RStudio:

> devtools::install_github("rstudio/sparklyr")

установите пакеты readr и digest, если они у вас не установлены.

install.packages("readr")
install.packages("digest")
library(sparklyr)
spark_install(version = "1.6.2")`

После того, как пакеты установлены и вы пытаетесь подключиться Подключение к локальному экземпляру spark с помощью команды;

sc <- spark_connect(master = "local")

Вы можете увидеть ошибку, такую ​​как

Создан каталог bin по умолчанию hadoop в: C:\spark-1.6.2\tmp\hadoop Ошибка:

Чтобы запустить Spark в Windows, вам нужна копия Hadoop winutils.exe:

  1. Загрузите Hadoop winutils.exe из
  2. Скопируйте файл winutils.exe в C:\spark-1.6.2\tmp\hadoop\bin

В качестве альтернативы, если вы используете RStudio, вы можете установить предварительную версию RStudio, которая включает в себя встроенную копию Hadoop winutils.exe.

Устранение ошибок дано вам. Перейдите в учетную запись github, загрузите файл winutils.exe и сохраните его в папке, C:\spark-1.6.2\tmp\hadoop\bin и попробуйте снова создать контекст искры. В прошлом году я опубликовал в своем блоге подробное сообщение об установке и работе с sparkR в среде Windows.

Сказав это, я бы порекомендовал не идти по этому болезненному пути установки локального экземпляра spark на обычном RStudio, а попробовать версию RStudio Preview. Это значительно избавит вас от хлопот создания спаркконтекста. Продолжая далее, вот подробный пост о том, как sparklyr могут быть использованы R-блогерами.

Надеюсь, это поможет.

Приветствия.

Я могу дать вам основные моменты для sparklyr:

В текущем 0.4 версия, он пока не поддерживает выполнение произвольного параллельного кода. Тем не менее, расширения могут быть легко написаны на Scala, чтобы преодолеть это ограничение, см. Sparkhello.

Поскольку я не вижу слишком много ответов в пользу sparkR Я просто хочу упомянуть, что как новичок я начал изучать их обоих, и я вижу, что API-интерфейс sparkR более тесно связан с тем, который я использую со стандартным scala-spark, Поскольку я изучаю их обоих, я имею в виду, я хочу использовать rstudio а также scala, мне нужно выбрать между sparkr и sparklyr. Изучение sparkR вместе с API-интерфейсом scala-spark, похоже, требует меньших усилий, чем изучение sparklyr, что значительно отличается, по крайней мере, на мой взгляд. Однако Sparklyr кажется более мощным. Поэтому для меня вопрос заключается в том, хотите ли вы использовать более мощную и обычно используемую библиотеку с большей поддержкой со стороны сообщества или же вы идете на компромисс и используете более похожий API, как в Scala-Spark, что, по крайней мере, является моей перспективой выбора.

... добавив к вышесказанному от Хавьера...

Что я могу найти до сих пор, sparklyr не поддерживает do(), делая его полезным только тогда, когда вы хотите делать то, что разрешено с помощью mutate, суммирования и т. Д. Под капотом sparklyr преобразуется в Spark SQL, но не делает (еще?) преобразовать do () во что-то вроде UDF.

Кроме того, что я могу найти до сих пор, sparklyr не поддерживает tidyr, включая unnest().

Недавно я написал обзор преимуществ / недостатков SparkR по сравнению со sparklyr, которые могут представлять интерес: https://eddjberry.netlify.com/post/2017-12-05-sparkr-vs-sparklyr/.

В верхней части поста есть таблица, которая дает приблизительный обзор различий по ряду критериев.

Я пришел к выводу, что sparklyr предпочтительнее SparkR, Наиболее заметные преимущества:

  1. Лучшая обработка данных благодаря совместимости с dpylr
  2. Лучшее соглашение об именах функций
  3. Лучшие инструменты для быстрой оценки моделей ML
  4. Проще запустить произвольный код на Spark DataFrame
Другие вопросы по тегам