Русский
Русский
English
Статистика
Реклама

Zeppelin

Как мы автоматизировали выгрузки и другие Ad-hoc задачи аналитика с помощью Zeppelin

16.12.2020 18:10:53 | Автор: admin

На момент написания этой статьи в компании Cardsmobile, которая разрабатывает мобильное приложение Кошелёк, работает 195 человек: 8 аналитиков и 187 потенциальных заказчиков аналитиков. Мы делаем приложение для конечных пользователей, а также работаем с ритейлом, банками, брендами и другими партнерами. Долгое время работа аналитика в Кошельке состояла не только из исследований поведения пользователя, но и из различных выгрузок, типовых анализов для партнеров и прогнозов для потенциальных клиентов. Конечно, дашборды сильно спасали нам жизнь и позволяли всей компании следить за показателями продукта. Но мы всё ещё тратили время на остальную текучку, и с ростом команды (заказчиков) и бизнеса упёрлись: Ad-hoc задач стало слишком много, а исследования, желание развиваться и светлое будущее простаивали в отсутствие у нас времени.


Так много вокруг классных конференций, интересных статей про различные аналитические исследования, data-science, data-driven, data-счастье. А мы смотрели на всю эту красоту и не знали, где среди всего потока текучки найти время на эксперименты. Многие рассказывают, как сделать классно, но мало кто рассказывает, КАК преодолеть нарастающую текучку и освободить ресурсы для интересных и творческих задач. В этой статье я расскажу про наш опыт выхода в светлое будущее. Дальше будут примеры, как мы автоматизируем Ad-hoc задачи аналитиков в Zeppelin.


Что такое Zeppelin


Zeppelin это OpenSource Notebook от Apache, который позволяет обращаться к различным БД на разных языках (Python, R, SQL, Spark). Но что делает его особенно кайфовым, так это набор визуальных элементов dynamic forms.


В одном ноутбуке мы можем извлекать данные по api из Amplitude, быстро считать агрегаты из Clickhouse, дополнять результат данными из MSSQL и обрабатывать все это на Python. А готовые отчеты заворачивать в Excel в удобном заказчику формате и класть в html-ссылку, по которой их можно легко скачать.


Изначально мы начали использовать его просто как notebook, в котором было удобно писать на разных языках. Потом изучили возможности Zeppelin получше, нашли встроенные динамические формы: инбоксы, выпадающие списки и чеклиты лампочка над головой загорелась! Сразу придумали, сколько всего мы можем автоматизировать. У нас было много типовых задач с готовым кодом, в котором надо было просто менять значения переменных. Мы перенесли весь наш код в Zeppelin, вынесли переменные в динамические формы и дали заказчикам возможность самостоятельно заполнять их и запускать скрипты. Идея понравилась и нам, и всей остальной команде! :)


Какие динамические формы есть


Input текстовое поле. Мы используем его, для того чтобы задать временной диапазон для ввода идентификаторов. Другими словами, для всего, вариаций чего бывает много.


image


Select выпадающий список. К каждому элементу списка можно прописать сразу готовый кусок кода. Мы предлагаем пользователю выбрать один из нескольких типовых вариантов. Например, одну из метрик для типового отчета.


image


Checkbox форма для множественного выбора вариаций. Мы даем его пользователю, чтобы он, к примеру, сам мог выбрать список необходимых полей в выгрузке. Пожалуй, у нас это самый популярный кейс. Или когда мы даем возможность выбрать несколько метрик, сегментов пользователей.


image


Какие задачи мы автоматизируем в Zeppelin


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


Чаще всего запросы на выгрузки приходят от аккаунт-менеджеров. А еще, с большой вероятностью, они поступают внезапно и срочно. Сами по себе задачи на выгрузку типовые и быстрые в выполнении. Но в действительности они отвлекают от тех самых интересных аналитических исследований, и их число растет по мере роста партнерской сети.


С какими задачами обычно приходят:


  • Потенциальный партнер хочет оценить ту аудиторию, которая уже пользуется его картой лояльности в нашем приложении. Наши менеджеры по продажам могут прямо на встрече зайти в Zeppelin и выгрузить список карт. Они передают материалы еще до того, как диалог и интерес к нашему сервису начинают остывать. Мы не оценивали, но, возможно, это способствует ускорению продаж.
  • К нашей партнерской сети подключается новый магазин. Его карты уже существовали в пластиковом формате, наши пользователи могли добавлять их в приложение и показывать штрихкод на кассе. Но с подключением мы дали партнеру новые возможности: теперь у пользователя под картой появилась информация о спецпредложениях, персональные скидки. Менеджер на стороне партнера хочет оценить, как изменилось покупательское поведение среди тех, кто добавил их карту в приложение Кошелёк. Наш аккаунт-менеджер помогает ему выгружает все карты номера и штрихкоды карт, которые уже существовали ранее на пластиковом носителе, выпущенные в какой-то определенный период.
  • Партнер хочет повысить продажи определенного товара и запускает акцию. Он информирует свою аудиторию в приложении Кошелёк о специальных скидках на товар, используя пуш-сообщения. Чтобы оценить эффективность этой коммуникации, мы выгружаем ему отчет о том, кто получил и прочитал данный пуш.

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


image


Типовые задачи, в которых надо просто запустить готовый скрипт. Тут тоже применяем фильтры, даём задать значение переменных. Например, пересчет какой-то метрики или отчета, которые используются редко и не хочется ставить их на расписание.


Более изощренный кейс из жизни. Отдел маркетинга совместно с нашими стратегическими партнерами решили провести промо-акцию с определенной механикой. Пользователи нашего приложения должны были совершить цепочку действий, становясь участниками розыгрыша подарков. Раз в неделю мы хотели получать список участников недели, рандомно определять победителей, поздравлять их и отправлять подарки. Аналитик направления создал notebook в Zeppelin, который собирал пользователей, соответствующих условиям участия в розыгрыше за прошедшую календарную неделю. Маркетолог самостоятельно запускал notebook и забирал участников недели.


Подведение итогов А/B-тестов, измерение base-line метрик в тестовой и контрольной группах. Когда мы тестируем новый функционал или триггерную коммуникацию, мы смотрим не только на изменение целевой метрики, но и на то, как в целом меняется поведение пользователя. Мы выделили 4 base-line метрики пользовательского поведения:


  • Активность в приложении
  • Выпуски карт лояльности и других продуктов
  • Отписки
  • Обращения в саппорт

Тут Zeppelin дает нам свободу в том, как мы хотим подводить итоги, какие метрики считать, как отрисовывать графики и как объяснять результат тем, кто будет пользоваться этим инструментом.


image


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


  • Пользователи, которые пришли в период
  • Добавили 5 или менее карт из топ 10 программ лояльности
  • Начали проходить определенный сценарий, но не закончили
  • Пользовались приложением больше 2х раз за последний месяц
  • И можно добавить фильтры по модели устройства, сотовому оператору и географии

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


И все это так и было, пока один аналитик не обленился достаточно, чтобы не писать код для выборки пользователей в Clickhouse, а собрать когорту в Amplitude и выгрузить ее по api. Что, согласитесь, сильно проще и быстрее. Привычный и уже понятный интерфейс Amplitude, где любой менеджер может самостоятельно собрать когорту со всеми фильтрами из примера выше, проверить ее размер, дополнительно проконтролировать себя и проверить пользователей из когорты, что они попали в нее верно.


Как выглядит механика:


  • Продакт-менеджер или маркетолог создает когорту в Amplitude. При необходимости сложные кейсы показывает аналитику.
  • Копирует id когорты, который находится в адресной строке
  • Вставляет в notebook в Zeppelin
  • Выставляет дополнительные фильтры, данных для которых нет в Amplitude
  • Присваивает рассылке уникальный sub_id и запускает notebook

Что происходит в это время:


  • Скрипт берет id когорты и выгружает ее по api из Amplitude
  • Полученный DataFrame очищается от лишних строк в Python
  • При необходимости база получателей дополнительно фильтруется по полу и/или возрасту
  • Так же выделяется контрольная группа, если мы хотим измерить эффективность рассылки (а мы редко не хотим)
  • Получатели записываются в БД для истории и передаются в csv-файл, который мы для удобства скачивания кладем в кликабельную ссылку

Я привела пример именно с пуш-рассылками, но у наших коллег быстро возникли идеи, где еще мы можем применять похожий инструмент: любые выгрузки списка пользователей с определенным пользовательским поведением. Сейчас мы используем когорты из Amplitude еще и для запуска ретаргетинговых кампаний. И, думаю, будем использовать и для многих других задач.


image


Системы мониторинга
Есть еще одна удобная фича, которая правда не относится к динамическим формам и, наверное, не совсем про автоматизацию запуск по расписанию. Мы используем ее для пересчета дашбордов, запуска разных расчетов. Но самая полезная аналитическая задача, которую мы с ее помощью решаем, это мониторинг. Аномалии в событиях, в поведении метрик, что угодно, за чем должен регулярно следить аналитик, но что тоже хочется автоматизировать. Мы настроили систему алертов в slack и теперь можем вовремя реагировать на изменения, о которых хотим знать:


  • Рост или падение важных продуктовых показателей, конверсий сценариев, которые отражают качество пользовательского опыта и влияют на Retention.
  • Рост числа ошибок, которые могут возникать у пользователя. Не все такие аномалии могут отразиться на росте количества обращений в support. Многие могут повлиять на ухудшение конверсий и в итоге увеличить отток. И даже если они не критичны, а просто доставляют неудобство нашей аудитории, нам важно вовремя о них узнать и сократить их число.
  • Просто аномалии в количестве всех событий и каждого в отдельности. Такой мониторинг позволяет нам отлавливать кейсы, о которых мы не подумали заранее.
  • Мы так же настроили алерт о том, что какие-то из наших регулярных расчетов, которые работают в Zeppelin по расписанию, отработали с ошибкой. Мы создаем много полезных инструментов, но не можем постоянно вручную следить за их качеством.

Success. Победили текучку, освободили время для развития аналитики в компании


Самый приятный абзац этой статьи наступило светлое будущее! Мы уже автоматизировали большую часть наших Ad-hoc задач. Теперь в спринте их меньше 10%. В освободившееся время мы проводим исследования, выдвигаем и проверяем гипотезы, усложняем наши продукты аналитики и применяем подходы из тех самых статей и выступлений на конференциях. Другими словами, мы наконец занимаемся интересной аналитической работой. А главное, у нас появилось время принимать активное участие в развитии Кошелька.


Совет начинающим автоматизаторам: все частые и типовые куски кода выносите в библиотеки. Это позволит писать быстрее, улучшать качество написания кода всей команды аналитиков и править код в одном месте, а не во всех ноутбуках. И не забывайте, что вы делаете инструмент не для себя, а для своих коллег. А у них разный бэкграунд. Не пугайте их сложными интерфейсами и формулировками, делайте проще и понятнее.


Data-счастье еще впереди, но мы уже сильно воодушевились, ожили и бежим ему навстречу.

Подробнее..

Big Data Tools EAP 10 SSH-туннели, фильтрация приложений, пользовательские модули и многое другое

01.09.2020 18:20:28 | Автор: admin

Только что вышла очередная версия плагина Big Data Tools плагина для IntelliJ IDEA Ultimate, DataGrip и PyCharm, который обеспечивает интеграцию с Hadoop и Spark, позволяет редактировать и запускать интерактивные блокноты в Zeppelin.


Основная задача этого релиза поправить как можно больше проблем и улучшить плагин изнутри, но два важных улучшения видно невооруженным глазом:


  • соединяться с Hadoop и Spark теперь можно через SSH-туннели, создающиеся парой щелчков мыши;
  • мониторинг Hadoop может ограничивать объем данных, загружаемых при просмотре списка приложений.


SSH-туннели


Зачастую нужный нам сервер недоступен напрямую, например если он находится внутри защищенного корпоративного контура или закрыт специальными правилами на файерволе. Чтобы пробраться внутрь, можно использовать какой-то туннель или VPN. Самый простой из туннелей, который всегда под руками, это SSH.


Проложить туннель можно одной-единственной консольной командой:


ssh -f -N -L 1005:127.0.0.1:8080 user@spark.server

Немного автоматизировать процесс поможет файл ~/.ssh/config, в который ты один раз сохраняешь параметры соединения и потом используешь:


Host spark    HostName spark.server    IdentityFile ~/.ssh/spark.server.key    LocalForward 1005 127.0.0.1:8080    User user

Теперь достаточно написать в консоли ssh -f -N spark и туннель поднимется сам по себе, без вписывания IP-адресов. Удобно.


Но с этими способами есть две очевидных проблемы.


Во-первых, у кого-то может возникнуть масса вопросов. Что такое -f -N -L? Какой порт писать слева, а какой справа? Как выбирать адреса для соединений? Для всех, кроме профессиональных системных администраторов, такие мучения не кажутся полезными.


Во-вторых, мы программируем не в эмуляторе терминала, а в IDE. Всё, что вы запустили в консоли, работает глобально по отношению ко всей операционной системе, а в IDE хотелось бы для каждого проекта иметь свой собственный набор туннелей.


К счастью, начиная с этой версии в Big Data Tools есть возможность создавать туннели без ручного управления SSH-соединениями.



На скриншоте видно, что можно не только вручную указать все адреса и порты, но и подключить заранее подготовленный файл конфигурации SSH.


Опция Enable tunneling работает для следующих типов соединений:


  • Zeppelin
  • HDFS
  • Hadoop
  • Spark Monitoring

Важно отметить, что под капотом у нее все то же самое, что делает SSH. Не стоит ждать особой магии: например, если ты пытаешься открыть туннель на локальный порт, который уже занят другим приложением или туннелем, то случится ошибка.


Это довольно полезная опция, которая облегчает жизнь в большинстве повседневных ситуаций. Если же тебе нужно сделать что-то действительно сложное и нестандартное, то можно по старинке вручную использовать SSH, VPN или другие способы работы с сетью.


Вся работа велась в рамках задачи BDIDE-1063 на нашем YouTrack.


Управляемые ограничения на отображение приложений


Люди делятся на тех, у кого на странице Spark Monitoring всего парочка приложений, и тех, у кого их сотни.



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


В этой версии Big Data Tools вы можете существенно ограничить время ожидания, если вручную выберете диапазон загружаемых данных. Например, можно вызвать диалоговое окно редактирования диапазона дат и вручную выбрать только сегодняшний день.


Эта опция значительно экономит время тех, кто работает с большими продакшенами.


Работа велась в рамках задачи BDIDE-1077.


Подключение модулей в зависимости Zeppelin


У многих в Zeppelin используются зависимости на собственные JAR-файлы. Big Data Tools полезно знать о таких файлах, чтобы в IDE нормально работало автодополнение и другие функции.


При синхронизации с Zeppelin, Big Data Tools пытается получить все такие файлы. Но, по разным причинам, это не всегда возможно. Чтобы Big Data Tools узнал о существовании таких пропущенных файлов, необходимо вручную добавить их в IntelliJ IDEA.


Раньше в качестве зависимостей можно было использовать только артефакты из Maven либо отдельные JAR-файлы. Это не всегда удобно, ведь для получения этих артефактов и файлов нужно или их скачать откуда-то, или собрать весь проект.


Теперь любой модуль текущего проекта тоже можно использовать в качестве зависимости. Такие зависимости попадают в таблицу "User dependencies":



Работа велась в рамках задачи BDIDE-1087.


Множество свежих исправлений


Big Data Tools молодой, активно развивающийся проект. В таких условиях неизбежно появление проблем, которые мы стараемся оперативно устранять. В EAP 10 вошло множество исправлений, значительная часть которых посвящена повышению удобства работы со Spark Monitoring.


  • [BDIDE-1078] Раньше при сворачивании ячеек их заголовки просто не отображались. Теперь они правильно отображаются, но редактировать их из Big Data Tools все еще нельзя это тема для будущих исправлений.
  • [BDIDE-1137] Удаление соединения Spark Monitoring из Hadoop приводило к ошибке IncorrectOperationException.
  • [BDIDE-570] В таблице Jobs в Spark Monitoring у выделенной задачи могло исчезать выделение.
  • [BDIDE-706] При обновлении дерева задач в Spark Monitoring выделенная задача теряла выделение.
  • [BDIDE-737] Если компьютер заснул и вышел из сна, получение информации о приложении в Spark Monitoring требовало перезагрузки IDE.
  • [BDIDE-1049] Перезапуск IDE мог приводить к появлению ошибки DisposalException.
  • [BDIDE-1060] Перезапуск IDE с открытым Variable View (функциональность ZTools) мог привести к ошибке IllegalArgumentException.
  • [BDIDE-1066] Редактирование свойств неактивного соединения в Spark Monitoring приводило к его самопроизвольному включению на панели.
  • [BDIDE-1091] Удаление только что открытого соединения с Zeppelin приводило к ошибке ConcurrentModificationException.
  • [BDIDE-1092] Кнопка Refresh могла не обновлять задачи в Spark Monitoring.
  • [BDIDE-1093] После перезапуска Spark в Spark Monitoring отображалась ошибка подключения.
  • [BDIDE-1094] При отображении ошибки соединения в Spark Monitoring нельзя было изменить размеры окна с ошибкой.
  • [BDIDE-1099] В Spark Monitoring на вкладке SQL вместо сообщения "Loading" могло неверно отображаться сообщение "Empty List".
  • [BDIDE-1119] В Spark Monitoring свойства SQL продолжали отображаться даже при сбросе соединения или перезагрузке интерпретатора.
  • [BDIDE-1130] Если в списке приложений в Spark Monitoring фильтр скрывал вообще все приложения, возникала ошибка IndexOutOfBoundsException.
  • [BDIDE-1133] Таблицы отображали только один диапазон данных, даже если в свойствах таблицы было указано сразу несколько диапазонов.
  • [BDIDE-406] Раньше при соединении с некоторыми экземплярами Zeppelin отображалась ошибка синхронизации. В рамках этого же тикета включена поддержка Zeppelin 0.9, в частности collaborative mode.
  • [BDIDE-746] При отсутствии выбранного приложения или задачи в Spark Monitoring на странице с детализацией отображалась ошибка соединения.
  • [BDIDE-769] При переключении между различными соединениями к Spark Monitoring могла не отображаться информация об этом соединении.
  • [BDIDE-893] Время от времени список задач в Spark Monitoring исчезал, и вместо него отображалось некорректное сообщение о фильтрации.
  • [BDIDE-1010] После запуска ячейки, статус "Ready" отображался со слишком большой задержкой.
  • [BDIDE-1013] Локальные блокноты в Zeppelin раньше имели проблемы с переподключением.
  • [BDIDE-1020] В результате комбинации нескольких факторов могло сбиваться форматирование кода на SQL.
  • [BDIDE-1023] Раньше не отображался промежуточный вывод исполняющихся ячеек, теперь отображается под ними.
  • [BDIDE-1041] Непустые файлы на HDFS отображались как пустые, из-за чего их можно было случайно сохранить и стереть данные.
  • [BDIDE-1061] Исправлен баг в отображении отображением SQL-задач. Раньше было неясно, является ли сервер Spark привязанным к задаче или это History Server.
  • [BDIDE-1068] Временами ссылка на задачу в Spark терялась и появлялась вновь.
  • [BDIDE-1072], [BDIDE-838] Раньше в панели Big Data Tools не отображалась ошибка соединения с Hadoop и Spark.
  • [BDIDE-1083] Если при закрытии IDE работала хоть одна задача с индикатором прогресса, возникала ошибка "Memory leak detected".
  • [BDIDE-1089] В таблицах теперь поддерживается интернационализация.
  • [BDIDE-1103] При внезапном разрыве связи с Zeppelin не отображалось предупреждение о разрыве соединения.
  • [BDIDE-1104] Горизонтальные полосы прокрутки перекрывали текст.
  • [BDIDE-1120] При потере соединения к Spark Monitoring возникала ошибка RuntimeExceptionWithAttachments.
  • [BDIDE-1122] Перезапуск интерпретатора приводил к ошибке KotlinNullPointerException.
  • [BDIDE-1124] Подключение к Hadoop не могло использовать SOCKS-прокси.
Подробнее..

Big Data Tools EAP 11 Zeppelin в DataGrip и spark-submit во всех поддерживаемых IDE

09.10.2020 20:15:45 | Автор: admin

Только что вышло очередное обновление EAP 11 для плагина под названием Big Data Tools, доступного для установки в IntelliJ IDEA Ultimate, PyCharm, and DataGrip. Можно установить его через страницу плагина на сайте или внутри IDE.


Big Data Tools это плагин, позволяющий соединяться с кластерами Hadoop и Spark. Он предоставляет мониторинг узлов, приложений и отдельных задач. Кроме того, в IDEA и DataGrip можно создавать, запускать и редактировать ноутбуки Zeppelin. Можно не переключаться на веб-интерфейс Zeppelin и спокойно работать, не выходя из любимого IDE. Плагин позволяет удобно перемещаться по коду, делать умное автодополнение, рефакторинги и квик-фиксы прямо внутри ноутбука.



Новый тип конфигурации запуска для spark-submit


Одно из важнейших улучшений в этом релизе возможность запускать Spark-приложения из IDE, без необходимости набирать команды в консоли. Эта функциональность доступна для всех поддерживаемых IDE, включая PyCharm. Напоминаю, скрипт spark-submit лежит в директории bin дистрибутива Spark и используется для запуска приложений на кластере. Он использует все поддерживаемые типы кластеров через единый интерфейс: благодаря этому не нужно несколько раз по-разному перенастраивать своё приложение. Удобно.


Большая проблема пользователей spark-submit в том, что его использование сопряжено с рядом ритуальных рутинных действий. Нужно вручную собрать все артефакты, скопировать их на целевой сервер по SSH, запустить spark-submit с кучей параметров. Обычно всё это заканчивается написанием пачки bash-скриптов на все случаи жизни, которые ты теперь обязан поддерживать. В целом, эта рутина крадет время разработчиков, которое можно было бы потратить на что-то более полезное.


С плагином Big Data Tools этот кошмар можно если не прекратить, но значительно облегчить. Теперь вам достаточно создать новую run configuration, вписать в неё параметры spark-submit, параметры SSH, прописать артефакты-зависимости и нажать кнопку запуска. Дальше всё сработает автоматически.



Поддержка Apache Zeppelin в DataGrip


Теперь можно использовать интеграцию с Zeppelin внутри DataGrip. Для пользователей DataGrip это означает, что наконец-то можно нормально визуализировать данные. Кроме того, писать код на SQL куда легче с новым умным автодополнением прямо внутри интерактивного блокнота.


Надо понимать, что языковая поддержка сейчас ограничена только SQL. Например, Matplotlib или анализ кода на Scala в DataGrip у вас не заработают.


Изменения


В этом обновлении мы сконцентрировались на улучшении существующей функциональности. Полный список изменений можно прочитать по ссылке, а дальше будут перечислены только самые важные.


Новая функциональность


  • Поддержка Spark-submit для IntelliJ IDEA, DataGrip и PyCharm (BDIDE-843).
  • Поддержка Apache Zeppelin для DataGrip (BDIDE-1045).
  • Редактируемые заголовки параграфов в Zeppelin (BDIDE-906).
  • Расширенная фильтрация результатов поиска в Spark Monitoring (BDIDE-1159).
  • Псевдографические таблицы в текстовом ответе Zeppelin отображаются как полноценные таблицы (BDIDE-1172).

Улучшения в интерфейсе


  • Zeppelin: Функции экспорта теперь умеют запоминать путь, по которому в прошлый раз происходило сохранение (графики, таблицы и HTML в ответах Zeppelin) (BDIDE-1132).

Список исправленных багов


  • Zeppelin: Исправлено IntelliJ IDEA 2020.1 могла падать при просмотре ответа Zeppelin, содержащего встроенные изображения (BDIDE-1184).
  • Zeppelin: Исправлено Нельзя было подключиться к серверу, если эндпоинт /api/version требовал серверной аутентификации (BRIDE-1199).
  • Zeppelin: Исправлено Попытка остановить выполняющийся параграф останавливала вообще все параграфы в ноутбуке (BDIDE-1171).
  • Zeppelin: Исправлено Нумерация параграфов в окне Structure не совпадала с нумерацией внутри Zeppelin (BDIDE-1135).
  • Zeppelin: Fixed IDEA пыталась загружать исходники заново, при каждом новом запуске (BDIDE-1208).
  • Zeppelin: Исправлено Кнопка "Open in browser" для локальных ноутов была не нужна (BDIDE-1142).
  • Zeppelin: Исправлено Результаты выполнения могли стираться при перезапуске интерпретатора (BDIDE-1129).
  • Spark Monitoring: Исправлено Неправильный анализ JSON, в котором хранятся данные для списка Storages, приводил к очистке списка (BDIDE-1162).
  • Remote FS: Исправлено Копирование директорий внутри инстанса Azure иногда приводило к созданию пустых директорий (BDIDE-1141).
  • Remote FS: Исправлено Файлы с неизвестным содержимым стоит открывать как текстовые файлы (BDIDE-1192).
  • Remote FS: Исправлено Исключение возникало при попытке открывать файлы без расширения (BDIDE-1202).
  • General: Исправлено Проблемы при попытке копирования и вставки между различными проектами (BDIDE-1195).
  • HTTP Proxy: Исправлено Ошибка при соединении со Spark или Hadoop через SOCKS proxy с авторизацией (BDIDE-1209).
  • HTTP Proxy: Исправлено Проблема с параметрами авторизации для SCOKS proxy (BDIDE-1215).
  • HTTP Proxy: Исправлено Частные настройки прокси не должны перекрывать общие настройки для нового соединения (BDIDE-1216).

Документация и социальные сети


Ну и наконец, если вам нужно разобраться функциональностью Big Data Tools, у нас есть подробная документация. Если хочется задать вопрос, можно сделать это прямо в комментариях на Хабре или перейти в наш Twitter.


Надеемся, что все эти улучшения окажутся полезными, позволят вам делать более интересыне вещи, и более приятным способом.


Команда Big Data Tools

Подробнее..

Big Data Tools EAP 12 экспериментальная поддержка Python, поиск по ноутбукам в Zeppelin

16.12.2020 18:10:53 | Автор: admin

Только что вышло очередное обновление EAP 12 для плагина под названием Big Data Tools, доступного для установки в IntelliJ IDEA Ultimate, PyCharm Professional и DataGrip. Можно установить его через страницу плагина или внутри IDE. Плагин позволяет работать с Zeppelin, загружать файлы в облачные хранилища и проводить мониторинг кластеров Hadoop и Spark.


В этом релизе мы добавили экспериментальную поддержку Python и поиск по ноутбукам Zeppelin. Если вы страдали от каких-то багов, их тоже починено множество. Давайте поговорим об этих изменениях более подробно.



Экспериментальная поддержка Python в Zeppelin


Поддержку Python хотелось добавить давно. Несмотря на то, что PySpark в Zeppelin сейчас на волне хайпа, всё что предоставляет нам веб-интерфейс Zeppelin простейшее автодополнение, в котором содержится какой-то наполовину случайный набор переменных и функций. Вряд ли это можно ставить в вину Zeppelin, он никогда не обещал нам умного анализа кода. В IDE хочется видеть что-то намного большее.


Добавить целый новый язык звучит как очень сложная задача. К счастью, в наших IDE уже есть отличная поддержка Python: либо в PyCharm, либо в Python-плагине для IntelliJ IDEA. Нам нужно было взять эту готовую функциональность и интегрировать внутрь Zeppelin. Вместе с этим возникает много нюансов, специфичных для Zeppelin: как нам проанализировать список зависимостей, как найти правильную версию Python, и тому подобное.



Начиная с EAP 12, код на Python нормально подсвечивается в нашем редакторе ноутбуков Zeppelin, отображаются грубые синтаксические ошибки. Можно перейти на определение переменной или функции, если они объявлены внутри ноутбука. Можно сделать привычные рефакторинги вроде rename или change signature. Работают Zeppelin-специфичные таблицы и графики в конце концов, зачастую ради них люди и используют Zeppelin.



Конечно, многие вещи ещё предстоит сделать. Например, очень хотелось бы видеть умное автодополнение по функциям Spark API и другому внешнему коду. Сейчас мы нормально автодополняем только то, что написано внутри ноутбука. У нас есть хорошие идеи, как это реализовать в следующих релизах. Иначе говоря, не надо ждать какого-то чуда: теперь у вас есть полнофункциональный редактор Python, но это всё. Поддержка Python получилась довольно экспериментальной, но, как говорится, путь в тысячу ли начинается с первого шага. А ещё, даже имеющейся функциональности может оказаться достаточно, чтобы писать код в вашем любимом IDE и не переключаться на веб-интерфейс Zeppelin.


Смешиваем Scala и Python


Иногда, в одном и том же ноутбуке вам хочется одновременно использовать и Python, и Scala. Например, это бывает полезно из соображений производительности в вычислительных задачах.


Смешивать разные языки вполне возможно. Но не забывайте, что для полноценной поддержки Scala вам понадобится IntelliJ IDEA с плагинами Scala и Python. В PyCharm этот Scala-код хоть и будет выполняться, но его поддержка в редакторе останется на уровне plain text.



Поиск по ноутбукам Zeppelin


У нас всегда была возможность найти, в каком же файле на диске находится нужный нам текст (например, с помощью Find in Path, Ctrl+Shift+F). Но этот стандартный интерфейс поиска не работает с ноутбуками, ведь они не файлы!


Начиная с EAP 12 мы добавили отдельную панель поиска по ноутбукам. Откройте панель Big Data Tools, выделите какое-нибудь из подключений к Zeppelin и нажмите на кнопку с изображением лупы (или используйте сочетание клавиш Ctrl+F на клавиатуре). В результате, вы попадёте в окно под названием Find in Zeppelin Connections. Активация одного из результатов поиска приведет к открытию этого ноутбука и переходу на нужный параграф.



Похожий поиск есть и в веб-интерфейсе Zeppelin. Для получения результатов поиска мы используем стандартный HTTP API, поэтому результаты должны совпадать с тем, что вы видите в интерфейсе Zeppeliln по аналогичному поисковому запросу. Если вы раньше пользовались веб-интерфейсом и привыкли к поиску по ноутбукам, теперь он имеется и в Big Data Tools.


Функция небольшая, но очень полезная. Непонятно, как мы без неё жили раньше.


Исправления ошибок


Плагин Big Data Tools активно развивается, и при бурном росте неизбежны некоторые проблемы. В этом релизе мы провели много работы над правильной работой с удаленными хранилищами, отображением графиков и параграфов, переработали часть интерефейсов (например, SSH-туннели). Переработаны кое-какие системные вещи (например, несколько проектов теперь используют общее подключение к Zeppelin), вывезли множество ошибок в неожиданных местах. В целом, теперь пользоваться плагином намного приятней.


Если вам интересен обзор основных улучшений, то их можно найти в разделе What's New на странице плагина. Если вы ищете какую-то конкретную проблему, вам может подойти полный отчет из YouTrack.


Спасибо, что пользуетесь нашим плагином! Напоминаю, что установить свежую версию можно либо в браузере, на странице плагина, или внутри IDE по названию Big Data Tools. На странице плагина можно оставлять ваши отзывы и предложения (которые мы всегда читаем), и ставить оценки в виде звёздочек.


Документация и социальные сети


Ну и наконец, если вам нужно разобраться функциональностью Big Data Tools, у нас есть подробная документация в вариантах для IntelliJ IDEA и PyCharm. Если хочется задать вопрос, можно сделать это прямо в комментариях на Хабре или перейти в наш Twitter.


Надеемся, что все эти улучшения окажутся полезными, позволят вам делать более интересыне вещи, и более приятным способом.


Команда Big Data Tools

Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru