Jupyter в качестве замены Zeppelin: многоязычная искра

Моя команда пытается перейти с Zeppelin на Jupyter для приложения, которое мы создали, потому что у Jupyter, кажется, больше импульса, больше возможностей для настройки и, как правило, он более гибкий. Тем не менее, есть несколько вещей, Zeppelin, которым мы не смогли найти эквивалентов в Jupyter.

Основным из них является поддержка мультиязычной Spark - возможно ли в Jupyter создать фрейм данных Spark, доступный через R, Scala, Python и SQL, все в одном блокноте? Мы написали библиотеку Scala Spark для создания фреймов данных и передачи их обратно пользователю, и пользователь может захотеть использовать различные языки для манипулирования / опроса фрейма данных, как только он получит его.

Является ли Livy решением этой проблемы в контексте Jupyter, то есть будет ли оно разрешать множественные подключения (от различных языковых интерфейсов) к общему интерфейсу Spark, чтобы они могли манипулировать одними и теми же объектами данных? Я не могу точно сказать с веб-сайта Livy, поддерживает ли данное соединение только один язык, или у каждого сеанса может быть несколько подключений к нему.

Если Ливи не является хорошим решением, может ли BeakerX удовлетворить эту потребность? На веб-сайте BeakerX говорится, что два основных аргумента:

  • Магия и автоперевод Polyglot, позволяющие получать доступ к нескольким языкам в одной записной книжке и легко общаться между ними;
  • Интеграция с Apache Spark, включая конфигурацию графического интерфейса, состояние, прогресс, прерывания и таблицы;

Однако мы не смогли использовать BeakerX для подключения к чему-либо, кроме локального кластера Spark, поэтому мы не смогли проверить, как на самом деле работает реализация полиглота. Если мы сможем подключиться к кластеру Yarn (например, кластеру EMR в AWS), предоставит ли поддержка полиглота доступ к одному и тому же сеансу с использованием разных языков?

Наконец, если ни одна из этих работ не сработает, подойдет ли обычная магия? Может быть, что-то, что через прокси запрашивает другие ядра, например spark а также pyspark а также sparkr Ядра? Проблема, которую я вижу с этим подходом, состоит в том, что я думаю, что у каждого из этих внутренних ядер будет свой собственный контекст Spark, но есть ли способ обойти это, о котором я не думаю?

(Я знаю, что ТАК не следует задавать вопросы о мнениях или рекомендациях, поэтому здесь я действительно спрашиваю, существует ли на самом деле возможный путь к успеху для трех вышеупомянутых альтернатив, а не обязательно, какой из них я должен выбрать.)

1 ответ

Другой возможный вариант - блокнот для полиглота SoS (Script of Scripts) https://vatlab.github.io/sos-docs/index.html. Он поддерживает несколько ядер Jupyter в одном ноутбуке. SoS имеет несколько изначально поддерживаемых языков (R, Ruby, Python 2 и 3, Matlab, SAS и т. Д.). Scala изначально не поддерживается, но можно передавать информацию в ядро ​​Scala и записывать вывод. Есть также, казалось бы, простой способ добавить новый язык (уже с ядром Jupyter); см. https://vatlab.github.io/sos-docs/doc/documentation/Language_Module.html

Я использую Livy в своем приложении. Это работает так, что любой пользователь может подключиться к уже установленному сеансу спарка, используя REST (асинхронные вызовы). У нас есть кластер, на котором Livy отправляет код Scala для выполнения. Вам решать, хотите ли вы закрыть сессию после отправки скала-кода или нет. Если сеанс открыт, то любой, имеющий доступ, может отправить код Scala еще раз для дальнейшей обработки. Я не пробовал отправлять разные языки в одном сеансе, созданном через Livy, но я знаю, что Livy поддерживает 3 языка в интерактивном режиме, т.е. R, Python и Scala. Таким образом, теоретически вы сможете отправить код на любом языке для исполнения.

Надеюсь, это поможет в некоторой степени.

Другие вопросы по тегам