Spark 2.0

Опубликовано Опубликовано в рубрике Основная

Некоторое время уже изучаю Apache Spark, в версии для R (SparkR). Ну как изучаю — нашел книжку про Spark, в которой есть примеры на Scala и Python и пытаюсь их переложить на R. Медленно и с трудом но вроде получается.
Конечно — реализация для R еще очень и очень слаба.
Основные претензии:
* нет загрузки CSV файлов. Реализацию загрузки через databricks/spark-csv реализовать так и не удалось. Сижу за прокси — и так и не смог заставить SCALA достучаться до библиотек через него не смог. Есть конечно вариант копировать нужные JAR-ы и раскладывать их по разным правильным каталогам — но как-то это не мое.
* только одна модель машинного обучения GLM

Так было до недавнего времени. Поэтому выход в конце июля версии Spark 2.0.0 я встретил воодушевленно. По описанию — появилась родная поддержка CSV и библиотека моделей машинного обучения расширилась naive Bayes, k-means clustering, survival regression.

Однако — не все так оказалось просто. После переустановки сначала выяснилось — что первоначальные команды инициализации Spark уже «deprecated» (короче — запрещены). А они прописаны во всех книжках 🙂
Ну ладно. Посмотрел доки к новой версии — разобрался.
Собрался было уже вкусить удовольствие от быстрой параллельной закачки огромных CSV файлов. Однако — сделал все по tutorial — а в ответ получил так ненавидимый в Spark бесконечный листинг ошибки SCALA/Java.
Ладно, думаю — жил без CSV и дальше проживу.
Стал дальше учиться, но не тут-то было. Практически любое действие вызывает эту (или похожую) ошибку. Тут мне поплохело — и я пошел курить STACKOVERFLOW. Где я только не был. Прочитал «практически все» про SCALA, pyspark, HIVE. Ничего похожего особо не встречается. Ну да — релиз совсем свежий, может и не быть. И вот каким то чудом в теме про JAVA натолкнулся на знакомое слово, пока пытался разрулить эту ошибку в SCALA окружении.
Короче теперь рецепт.
В мануале инициализация так:
sparkR.session()
Эта команда у меня лично проходит, но потом любое, даже примитивное действие типа
createDataFrame(iris)
вызывает УЖАСНО длинную ошибку.

Если у вас так же, то рецепт у меня такой (это такая неофициальная ошибка/фича)
sparkR.session(sparkConfig = list(spark.sql.warehouse.dir="/file:C:/temp"))

Spark 2.0: 7 комментариев

  1. По поводу загрузки csv: оптимальный вариант, как мне кажется, использовать загрузку в hdfs, а далее создавать таблицу в hive metsatore. Тогда доступ будет возможен и из Spark и из Hive. Не подскажете какую вы книгу изучаете?

    1. Хм, возможно Вы и правы. Но Hadoop пока только в списке на установку и изучение, поэтому ничего рассказать про данный вариант не могу.
      Читаю книгу «Machine Learning with Spark«. Что нравится в ней, это то, что приведены конкретные задачи машинного обучения на примерах — Рекомендации, Кластеризация, Регрессия. А не абстрактные описания концепций, как в переведенной на русский «Изучаем Spark», в которой собственно ML уделено совсем немного внимания… Но полезность обоих книг несомненна, но она разная эта полезность. Возможно зависит от принятой каждым стратегии обучения. Мне нравится как можно быстрее получить рабочий вариант — а потом разбираться в нюансах.

  2. Спасибо. Как раз хотел поглубже поразбираться моделями ML в Spark. Сейчас использую SparkSQL в связке с pySpark только для подготовки данных, а модели строю уже в R отдельно.

  3. Здравствуйте.
    А вы где используете Spark? Как его развернули?
    Я сейчас занимаюсь подобным, только на готовым кластере spark в Azure.

    Вообще реализаций распределенных вычислений (spark в частности) в R уже несколько,
    и каждая из них отличается своими недостатками и достоинствами.

    1. Вы не поверите, но у меня не кластер, а одинокий мастер поднятый под Win32 🙂 могу на него ещё екзекьютеров поднять, но что-то совсем комп подыхает 🙂

      И да, те задачи на которых я учусь намного медленнее решаются под spark, чем чисто в R их решить.
      Так что мазохизм ради обучения 🙂

      1. да у меня тоже самое, на локальном спарке все очень медленно, возможно выигрыш будет только на больших объемах…но теперь пробую на настоящем кластере спарка, посмотрю как там будет

        1. Ну, как минимум выигрыш в том, что пусть медленно, но можно обрабатывать данные целиком, которые очень сильно не влезают в оперативку…. На чистом R это делать проблематично, хотя вроде есть подходы и приблуды.

Добавить комментарий