company_banner

Встречайте Big Data Tools: поддержка Spark и Zeppelin-ноутбуков в IntelliJ IDEA

Автор оригинала: Andrey Cheptsov
  • Перевод
У нас отличные новости. Мы рады объявить о выходе Big Data Tools — нового плагина для IntelliJ IDEA, который обеспечивает интеграцию со Spark и поддерживает редактирование и запуск Zeppelin-ноутбуков. Теперь вы можете создавать, редактировать и запускать Zeppelin notebooks прямо из IDE. Плагин предоставляет умную навигацию, автодополнение, инспекции и быстрые исправления, а также рефакторинг кода внутри ноутбуков.

Что уже поддерживается

  • Просмотр, создание и удаление ноутбуков
  • Помощь при написании Scala-кода
    • Автодополнение
    • Рефакторинг Rename
    • Экстракт переменной, метода или параметра
    • Переход к декларации
    • Поиск использований

  • Создание и удаление параграфов
  • Запуск параграфов
  • Просмотр вывода параграфов
  • Поддержка базовой визуализации

Пока что помощь при написании кода работает только для Scala. Другие языки будут поддержаны позже. Кроме того, мы не собираемся ограничиваться поддержкой Zeppelin и планируем добавить больше возможностей, которые будут полезны для тех, кто работает с большими данными.

Если вам не терпится увидеть Big Data Tools в действии, посмотрите это короткое видео:


А лучше попробуйте плагин сами! Как это сделать, читайте далее.

Как использовать плагин

  • Убедитесь, что вы используете IntelliJ IDEA Ultimate 2019.2 (обратите внимание, плагин пока не работает с EAP 2019.3).
  • Проверьте, установлены ли плагины BashSupport, Python и Scala (подойдут свежие версии). Пока что их придется устанавливать вручную — мы скоро это исправим.
  • Установите новейшую сборку плагина Big Data Tools.
  • Если все работает как надо, после перезапуска IDE справа появится окно инструментов Big Data Tools. Откройте его, кликните по значку «+» на панели инструментов в окне и выберите Zeppelin.
  • В диалоговом окне подключения Zeppelin укажите параметры для подключения вашего экземпляра Zeppelin (хост, порт, учетные данные и т.д.). Для проверки соединения используйте Test Connection.
  • После настройки конфигурации Zeppelin вы увидите этот экземпляр в окне инструментов вместе с деревом ноутбуков. Теперь вы сможете управлять ноутбуками и открывать их в редакторе.

Что дальше?

Прежде всего, мы не собираемся ограничиваться интеграцией с Zeppelin и Spark, которую мы, конечно, будем улучшать. Мы планируем поддержать больше инструментов для работы с большими данными: добавить интеграцию с распределенными файловыми системами, такими как HDFS и S3, реализовать встроенное средство просмотра файлов Parquet и улучшить поддержку SQL.

Вот примерный план нашей работы в обозримом будущем:

  • Ноябрь 2019: совместимость с IntelliJ IDEA Ultimate 2019.3 EAP.
  • Ноябрь 2019: интеграция с S3 (проводник).
  • Декабрь 2019: базовая поддержка SQL (подсветка, автодополнение, автоформатирование и т.д.).
  • Январь 2020: интеграция с HDFS (проводник) и средство просмотра Parquet-файлов.
  • Февраль 2020: базовая интеграция с Hadoop и Spark (пользовательские интерфейсы YARN, Spark и т.д.).
  • Весна/лето 2020: поддержка Python в Zeppelin-ноутбуках (мы также рассматриваем вопрос о совместимости плагина с PyCharm Professional Edition, сообщим об этом позже).

Это неокончательный план. Мы будем корректировать его на основе ваших отзывов, чтобы быть уверенными, что мы сосредоточены на нужных вещах. Пожалуйста, сообщайте нам об ошибках и делитесь мнением о том, каких фич недостает и как, по-вашему, должна работать та или иная функция.

Что еще важно знать о новом плагине

Плагин Big Data Tools совместим только с IntelliJ IDEA Ultimate и недоступен в Community Edition. Мы еще не знаем, попадет ли он в Community Edition. На данный момент таких планов у нас нет.
То же самое касается и других сред разработки. Мы пока не знаем, будет ли плагин совместим с другими IDE. На данный момент у нас есть только предварительный план добавить совместимость с PyCharm Professional Edition, как только в плагине появится поддержка Python. По мере развития плагина мы сможем лучше понимать, куда нам стоит двигаться в контексте его поддержки в других IDE.

У меня нет лицензии на IntelliJ IDEA Ultimate. Как мне попробовать плагин?

  • Если вы активно участвуете в любом проекте с открытым исходным кодом, связанном с большими данными, напишите нам.
  • Если вы хотите написать о Big Data Tools, свяжитесь с нами, и мы предоставим вам расширенную пробную версию, чтобы вы могли оценить плагин.
  • Если вы не являетесь ни коммиттером, ни блогером, но проявляете интерес к большим данным, обратитесь к нам за расширенной пробной версией (например, до 3 месяцев). Это предложение ограничено.

Как оставить отзыв

Мы очень ждем ваших отзывов о плагине. Любые вопросы вы можете задать в комментариях к этому посту. Замечания и предложения оставляйте в нашем трекере.
Вы также можете поделиться своими впечатлениями о плагине, пройдя короткий опрос. Это займет всего минуту.

Конструктивная критика поможет нам сделать вашу работу со Spark, Zeppelin и большими данными максимально удобной и эффективной. Поэтому не стесняйтесь делиться своими отзывами и предложениями — нам это важно.

P. S. Особенно приятно, что выход плагина совершенно случайно совпал с нашим участием в Spark AI Summit. Так что если вы вдруг окажетесь на этой конференции, обязательно приходите на наш стенд: сможете посмотреть на плагин в действии и поделиться своими впечатлениями.

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.

Какие инструменты из этого списка вы используете профессионально?

  • 85.3%Spark35
  • 60.9%Hadoop25
  • 46.3%Hive19
  • 9.7%Flink4
  • 0%Pig0
  • 2.4%Beam1
  • 12.1%Другое (напишу в комментариях)5

Какие инструменты из этого списка вы используете?

  • 22%Zeppelin11
  • 52%Jupyter26
  • 10%RStudio5
  • 2%Spider1
  • 8%Google Colab4
  • 78%IntelliJ IDEA39
  • 36%PyCharm18
  • 6%Другое (напишу в комментариях)3

Кем вы работаете?

  • 4%Data scientist2
  • 0%Data analyst0
  • 4%ML engineer2
  • 30.6%Data engineer15
  • 44.8%Software engineer22
  • 6.1%DevOps3
  • 10.2%Другое (напишу в комментариях)5
JetBrains
472,38
Делаем эффективные инструменты для разработчиков
Поделиться публикацией

Комментарии 17

    +3
    Все-таки переводить «Notebooks» как ноутбук — не есть хорошо.
      0
      Опрос не открывается.
        0

        Спасибо, поправили!

        +1
        Как Spark + Java 8 + Scala разработчик на Hadoop скажу вот что: нам для работы со Spark более чем хватает Community. Спарк вполне запускается локально на машине разработчика, и вполне может при этом работать с кластером (проблемы при этом — ну разве что правильная настройка Kerberos). У нас Jupiter, и Hue. А еще например Hbase, и Kafka. И Oozie. Кроме паркета мы чего только не используем, из очевидных — Avro и CSV, а еще JSON, к примеру. Scala плагин есть, и он более-менее работает (далеко не идеально, впрочем).

        И вот смотрю я на этот зооопарк, и думаю — а нафига бы мне пригодился такой вот инструмент? И прихожу к выводу, что ни для чего он мне не нужен. Нашим DataScience коллегам — возможно и подошел бы, но они а) пишут на PySpark, то есть на сегодня в пролете, и б) у них Jupiter, а не Цеппелин. Базовая интеграция со Spark на Hedoop… ну хм. И что, отладку на кластере напишете? Авторизацию в Kerberos (IPA), в количестве N штук, несколько кластеров одновременно. Интеграция с и.т.д (например, Hive, но HBase и кафка тоже напрашивается) нужна позарез. Причем со всем и.т.д. одновременно.
          0
          а нам бы пригодилось. по данным с кластера красивые отчетики прямо в родной среде вывести.
          зепелин что бы поставить надо админов привлекать, ставить stb, открывать порты. сложно…
            0
            Расскажите подробнее про сложности настройки. Используете ли вы Spark? Удобно ли было бы запускать Zeppelin или Spark локально?
              0
              у нас на кластере cloudera 5.x, там по дефолту спарк еще из первой ветки. на узлах кластера стоит parcel c 2.x веткой, а на машинках что имеют доступ к узлам кластера похоже не по ставили. т.е. надо или с админами договариваться или самому собирать ванильный, который тоже так просто не собрался.
              и локально че-то не работает, зепелин коверкает похоже логи и даже не понять что у него не так

              2019-10-17 08:48:30 INFO Client:54 - Setting up container launch context for our AM
              2019-10-17 08:48:30 INFO Client:54 - Setting up the launch environment for our AM container
              2019-10-17 08:48:30 INFO Client:54 - Preparing resources for our AM container
              2019-10-17 08:48:32 WARN Client:66 - Neither spark.yarn.jars nor spark.yarn.archive is set, falling back to uploading libraries under SPARK_HOME.
              2019-10-17 08:48:44 INFO Client:54 - Uploading resource file:/tmp/spark-e2b2fd0e-955d-43b7-a203-d86e7680b38a/__spark_libs__8513377897181943277.zip -> hdfs://censoredfs/user/censored/.sparkStaging/application_1570322815840_17054/__spark_libs__8513377897181943277.zip

              at org.apache.zeppelin.interpreter.remote.RemoteInterpreterManagedProcess.start(RemoteInterpreterManagedProcess.java:205)
              at org.apache.zeppelin.interpreter.ManagedInterpreterGroup.getOrCreateInterpreterProcess(ManagedInterpreterGroup.java:64)
              at org.apache.zeppelin.interpreter.remote.RemoteInterpreter.getOrCreateInterpreterProcess(RemoteInterpreter.java:111)
              at org.apache.zeppelin.interpreter.remote.RemoteInterpreter.internal_create(RemoteInterpreter.java:164)
              at org.apache.zeppelin.interpreter.remote.RemoteInterpreter.open(RemoteInterpreter.java:132)
              at org.apache.zeppelin.interpreter.remote.RemoteInterpreter.getFormType(RemoteInterpreter.java:299)
              at org.apache.zeppelin.notebook.Paragraph.jobRun(Paragraph.java:407)
              at org.apache.zeppelin.scheduler.Job.run(Job.java:188)
              at org.apache.zeppelin.scheduler.RemoteScheduler$JobRunner.run(RemoteScheduler.java:315)
              at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
              at java.util.concurrent.FutureTask.run(FutureTask.java:266)
              at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
              at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
              at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
              at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
              at java.lang.Thread.run(Thread.java:748)

              INFO [2019-10-17 08:49:25,755] ({pool-2-thread-2} VFSNotebookRepo.java[save]:196) - Saving note:2ERC9JRNE
              INFO [2019-10-17 08:49:25,769] ({pool-2-thread-2} SchedulerFactory.java[jobFinished]:120) - Job 20191017-083503_1590331634 finished by scheduler org.apache.zeppelin.interpreter.remote.RemoteInterpreter-spark:shared_process-shared_session
              INFO [2019-10-17 08:55:06,098] ({Exec Default Executor} RemoteInterpreterManagedProcess.java[onProcessComplete]:243) - Interpreter process exited 0


              удобно наверно было бы запускать из идеи в режиме yarn-cluster, т.е. драйвер программа где-то там на кластере жить будет.
                0
                Учитывая, что IntelliJ IDEA общается с Zeppelin через HTTP и тот же адрес и порт, который используется в браузере, проблем использования Zeppelin из IDE быть не должно.
                Позже, мы планируем также добавить поддержку мониторинга Spark джоб. Для этого нужно будет открыть хост и порт Spark Job History Server.
              0
              Насколько я понял, выполнение все равно на кластере. Почему порты-то вдруг станет легче открывать? А в целом вполне верю, что может пригодится — просто не всем.
              0
              Прошу прощение что раньше не ответил. Во-первых, спасибо за обратную связь.
              > Как Spark + Java 8 + Scala разработчик на Hadoop скажу вот что: нам для работы со Spark более чем хватает Community.
              Вполне могу понять. Хотя, если честно, мое мнение, более тесная интеграция со Spark не помешала бы: это и мониторинг джоб и более простой/удобный запуск Spark приложений, и т.п.
              > У нас Jupiter, и Hue.
              Вот прямо сейчас у меня задача понять, как мы можем упростить жизнь разработчиков Spark, которые используют Jupyter.
              > Кроме паркета мы чего только не используем, из очевидных — Avro и CSV, а еще JSON, к примеру.
              Думаю поддержка Avro стоит на очереди. CSV и JSON вроде как уже более или менее поддерживаются.
              > Интеграция с и.т.д (например, Hive, но HBase и кафка тоже напрашивается) нужна позарез.
              Да, желание ближе подружиться с Hive и начать предлагать полезные фичи – есть и, уверен, мы займемся этим в ближайшее время.
              Так или иначе, скажите, если у вас будет как-нибудь время созвониться на полчасика. Я бы с удовольствием подробнее по-расспросил, про потребности. С нас не заржавеет. ;-)
              В любом случае, спасибо огромное за обратную связь.
                0
                >Хотя, если честно, мое мнение, более тесная интеграция со Spark не помешала бы: это и мониторинг джоб и более простой/удобный запуск Spark приложений, и т.п.
                Да, само собой. Я говорил исключительно про текущие планы, которые уж так сложилось, слегка не про нас. Что в целом такое может пригодится — тут сомнения может и есть, но они исключительно в том, что задачи эти довольно сложные. Ну например отладка в ярн — это такое себе развлечение, когда вы не знаете ни числа процессов, ни хосты, где они запустились, и вообще ничего. И все обычные методы отладки дефакто не работают.
                  0
                  >> Кроме паркета мы чего только не используем, из очевидных — Avro и CSV, а еще JSON, к примеру.
                  Думаю поддержка Avro стоит на очереди. CSV и JSON вроде как уже более или менее поддерживаются.

                  В принципе, еще одна интересная тема — это поддержка разных форматов схем. Ну то есть, упрощенно — у авро своя схема, у паркета своя, а у Hive своя. И преобразование между ними, когда это нужно — не всегда простая задача. Hive пытается ее решать, но нам, к примеру, новые версии Hive пока не светят (потому что Hadoop ограничен 2.6, а на нем новые версии далеко не всего работают).
                0

                Привет, автор! Пишет архитектор бигдат/микросервисов повелитель. Все это тащить в среду разработки оч хорошо, но мало интересно, больше админские фичи, ну ок если sparksql синтаксис втащите, самое ценное перформанс тюнниг, план запросов и ну вы поняли, поддержку разбора и анализа графа — вот что круто, та инфа, которую неудобно смотреть в консоли, чарты по ней, и пр визуализации. А ставить идею куда в банковский прод что бы историю джобов смотреть, ну зачем. Круто если можно смотреть на то что внутри спарка, а не то что в рестапи, не и5теграшка с ярном или керберосом, разработка крч, а не админство.

                  0
                  > ну ок если sparksql синтаксис втащите, самое ценное перформанс тюнниг, план запросов и ну вы поняли, поддержку разбора и анализа графа — вот что круто
                  Будем думать. Уже есть мысли.
                  0
                  Имею Apache Zeppelin Version 0.7.3, плагин к нему не коннектится…
                  Так-же попробовал более новый, непонятно какой версии, в About пусто, но так-же плагин пишет — Zeppelin Unreachable
                    0

                    Действительно. Пока работает только начиная с 0.8.x. Вот тикет: https://youtrack.jetbrains.com/issue/BDIDE-375
                    Планируем в ближайшем апдейте починить

                      0
                      второй, вроде, как из 0.8.x… там уже точку надо оставлять в конце строки, чтобы цепочку вызовов по строкам разносить

                  Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                  Самое читаемое