Храните файлы в облачных файловых системах или, может быть, используете Hadoop, Spark и Zeppelin? А пробовали ли вы работать с ними напрямую из IDE? Привет, меня зовут Олег, я из команды плагина Big Data Tools. В этой статье мы поговорим, зачем этот плагин нужен, как применяется и где его достать. За последний год плагин прошёл большой путь и из экспериментального продукта превратился в боевое решение, на которое стоит взглянуть специалистам по Big Data. В JetBrains мы создаем IDE и другие инструменты, которые делают жизнь разработчиков лучше. Big Data Tools — это очень узкоспециализированный, редкоземельный плагин, который предназначен для конкретного вида разработчиков — для дата-инженеров. Если вам интересно подробней узнать о мире Big Data и работе дата-инженеров, рекомендую развернутую серию статей Паши Финкельштейна. Здесь мы рассмотрим одну из самых популярных схем. 1. Представим, что у нас есть какой-то внешний источник больших данных. Например, электронный магазин с тысячами покупок каждую секунду, с которого мы собираем кликстрим. 2. Все данные заливаются во внешнее хранилище (например, HDFS или в каком-нибудь облаке вроде Azure). 3. Дата-инженер смотрит на собранные данные глазами, понимает их структуру. Дальше он как-то их преобразовывает, трансформирует, что-то вычисляет на их основе. Суть трансформаций и вычислений каждый раз разная и зависит от того, что вообще нужно бизнесу. 4. И наконец, получившиеся данные отправляются назад в хранилище. Там их можно использовать как источник для построения отчётов, витрин и прочих BI систем. Наверняка вы уже знакомы с этой последовательностью действий и знаете, как она называется: ETL. Дата-инженеры — специальные люди, которые могут заниматься ETL всё рабочее время. Не всегда в этом процессе они участвуют в одиночку: например, в компании могут быть специалисты по машинному обучению, результат работы которых (какие-то модели) нужно будет докатить до продакшена. Чтобы не усложнять рассказ, давайте пока не будем их трогать и поговорим о технологиях. В нашем плагине мы стараемся поддержать самые популярные на данный момент решения – Hadoop, Spark и Zeppelin. Самый популярный язык программирования — Scala, но и с Python в этом году мы тоже научились работать. Для тех, кто только начинает разбираться с волшебным миром Big Data, на всякий случай раскрою суть этих технологий. Hadoop — это набор опенсорсных систем и фреймворков, на основе которых рабоает большинство современных решений для больших данных. В составе Hadoop есть реализация HDFS — одной из самых популярных распределенных файловых систем, которая позволяет хранить безумные объемы данных на большом количестве серверов одновременно. Spark — фреймворк для больших данных, который работает с Hadoop и предоставляет SQL-подобный API для работы с данными. Это очень удобно и крайне нравится разработчикам, привыкшим и идеологии SQL. Zeppelin — интерактивный блокнот, позволяющий быстро набирать код и на ходу визуализировать данные. В принципе, и визуально, и по принципу работы он похож на любой другой блокнот, вроде Jupyter или Databricks Notebooks. Он работает с кучей всевозможных внешних инструментов и языков программирования, включая Hadoop и Spark. Раз уж Zeppelin — это программа с графическим интерфейсом, держите скриншот, как она выглядит: При чем здесь плагин Big Data Tools? Если коротко, мы не улучшаем сами эти продукты, но делаем их использование приятней. «Как так» - спросите вы – «почему бы создателям Zeppelin и прочего самим не позаботиться о своих продуктах?». Далеко не вся сложность использования зарыта внутри фреймворков. Иногда проблемы возникают в области удобства использования. Например, Zeppelin работает в браузере и не может делать настолько же полный и продвинутый анализ кода, как в IDE. Там даже документацию не посмотреть. Но в Zeppelin это и не нужно, он создан для другого. Если же отказаться от Zeppelin и сразу писать код в IDE, то окажется, что внутри IDE нельзя быстро визуализировать данные и заниматься exploratory data analysis (EDA). Точнее, так было до недавнего времени, пока мы не добавили эту возможность с помощью плагина Big Data Tools. До этого момента люди жутко мучились, копипастили код между Zeppelin и IDE, и тратили силы и внимание на постоянные переключения между ними. Постоянные переключения внимания между задачами — это настоящий бич индустрии. После каждого такого переключения вам нужно концентрироваться и вспоминать, на чем вы остановились в прошлый раз. Это проблема не только Zeppelin, но и остальных инструментов в нашем арсенале. Например, чтобы посмотреть результат выполнения каких-то задач в Hadoop, вам нужно пойти в браузер и периодически обновлять страницу, следя за результатами выполнения. Если таких задач много, то довольно скоро вы находите себя бездумно нажимающим кнопку F5 на десятках страничек по половине дня. Это точно то, что вам нужно? Это интересно? Вот за этим вы когда-то стали дата-инженером? К счастью, у нас есть специальный инструмент, который призван интегрировать между собой все остальные. Этот инструмент — наша IDE. В данном случае — IntelliJ IDEA Ultimate, PyCharm Professional и DataGrip. После установки плагина Big Data Tools, вам становятся доступны несколько групп инструментов: Работа с облачными файловыми системами. Специальная панель, очень похожая на файловый менеджер, позволяет не только заливать файлы в облако, но и получать из них короткие сэмплы, без необходимости скачивать терабайты на свой ноутбук. Можно подключиться к Amazon S3, Azure, Google File Storage и другим провайдерам. Ноутбуки Zeppelin прямо внутри IDE. Интерфейс очень напоминает то, что вы видите в вебе, но со всеми плюшками вроде продвинутого анализа кода, рефакторингов, документации, идеального понимания языка Scala и тому подобного. Мониторинг джобов, исполняемых в Hadoop и Spark. Они отображаются в виде таблицы вместе со всеми результатами и параметрами. Запуск spark-submit как Run Configuration. Миллион параметров spark-submit не нужно запоминать – они все отображаются в графическом интерфейсе. Есть даже предварительная поддержка Kafka! Пока что мы умеем только работать с топиками. Скорей всего, в будущем там появятся все функции, которые вы ожидаете от графического клиента Kafka. В плагине зарыто очень много функциональности, не заметной с первого взгляда. Например, ко всем вышеперечисленным источникам вы можете попробовать подключиться через встроенную поддержку Proxy и SSH-туннелей. Все эти скрытые функции сами просятся под руку, стоит лишь начать пользоваться этим плагином серьёзно. Если вы используете что-то из этого и хотите сделать свою жизнь удобней — время устанавливать Big Data Tools! В данный момент Big Data Tools доступны как плагин для IntelliJ Ultimate, PyCharm Professional и DataGrip. Скачать его можно, если найти его поиском по плагинам внутри IDE, или вот с этой странички в маркетплейсе. Надо понимать, что каждая из IDE имеет свои особенности. Например, PyCharm работает только с Python, и в нем не будет подсветки Scala-кода. В DataGrip будет работать только SQL. Самая полная поддержка всех возможностей есть в IntelliJ IDEA Ultimate, куда можно установить плагин для Scala и Python. Мы активно разрабатываем и улучшаем Big Data Tools, ваши отзывы и комментарии — основа для этих улучшений. Например, если вы напишете нам о баге, мы постараемся как можно скорее добавить его в наш роадмап. Если хочется узнать больше о возможностях плагина, то стоит заглянуть в документацию по IntelliJ IDEA, PyCharm, or DataGrip. Хочется пообщаться с разработчиками? Рады будем ответить на ваши комментарии на Хабре или в нашем официальном Twitter! Мы надеемся, что Big Data Tools и все улучшения, которые появились в нём за последний год, сделают вашу жизнь в мире Big Data не только эффективней, но и приятней. Команда Big Data Tools Деврел Axiom JDK, продюсер в Failover Bar