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:
- Загрузите Hadoop winutils.exe из
- Скопируйте файл 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:
- Поддерживает dplyr, Spark ML и H2O.
- Распространено на CRAN.
- Прост в установке.
- Расширяемый
В текущем 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
, Наиболее заметные преимущества:
- Лучшая обработка данных благодаря совместимости с
dpylr
- Лучшее соглашение об именах функций
- Лучшие инструменты для быстрой оценки моделей ML
- Проще запустить произвольный код на Spark DataFrame