Общий обзор¶
Apache Zeppelin – это новый многофункциональный веб-блокнот, обеспечивающий считывание, анализ и визуализацию данных, их обмен и взаимодействие с Hadoop и Spark ( Рис.42. ).
Рис. 42. Apache Zeppelin
Интерактивные браузерные блокноты позволяют инженерам данных, аналитикам и ученым в области данных более продуктивно выполнять работу, благодаря совместному использованию кода данных, его разработке, организации и выполнению, а также благодаря визуализации результатов без необходимости обращения к командной строке или к компонентам кластера. Блокноты обеспечивают пользователям не только выполнение задач, но и интерактивную работу с долго выполняющимися потоками операций.
Apache Zeppelin – это новый веб-блокнот, который предоставляет функции поиска, визуализации, совместного использования и функциональное взаимодействие с Apache Spark. В него встроена интеграция со Spark, что избавляет от необходимости создания отдельного модуля, плагина или библиотеки, и это дает следующие преимущества:
- Автоматическое создание SparkContext и sqlcontext;
- Загрузка jar-зависимостей из локальной файловой системы или репозитория maven во время выполнения задачи;
- Возможность отмены задания и отображение хода его выполнения.
Apache Zeppelin поддерживает Python, но при этом концепция интерпретатора блокнота позволяет подключать любой язык/фреймворк обработки данных в Zeppelin. В настоящее время Zeppelin поддерживает множество интерпретаторов, например, такие как Scala, Hive, SparkSQL, Shell и Markdown ( Рис.43. ).
Рис. 43. Интерпретаторы
Некоторые базовые диаграммы уже включены в Apache Zeppelin, но визуализация не ограничивается запросом Spark SQL и любой результат с любого языка может быть распознан и визуализирован ( Рис.44. ).
Рис. 44. Визуализация данных
Apache Zeppelin агрегирует значения и отображает их в сводной диаграмме с простым перемещением drag-and-drop. Можно легко создать диаграмму с несколькими агрегированными значениями, в том числе: сумма, количество, среднее, минимальное, максимальное ( Рис.45. ).
Рис. 45. Сводная диаграмма
Также Apache Zeppelin может динамически создавать некоторые формы ввода в блокноте пользователя ( Рис.46. ).
Рис. 46. Формы ввода в блокноте
Поиск данных, их анализ, отчетность и визуализация являются ключевыми компонентами рабочего процесса в области данных. Zeppelin предоставляет “Modern Data Science Studio” (“Современную научную студию данных”), которая поддерживает Spark и Hive из коробки. Фактически Zeppelin поддерживает несколько языков, которые в свою очередь имеют поддержку растущей экосистемы источников данных. Блокноты Zeppelin позволяют ученым в области данных в реальном времени создавать и выполнять небольшие фрагменты кода.
URL-адресом блокнота можно поделиться между сотрудниками. В таком случае Apache Zeppelin транслирует любые изменения в реальном времени точно так же, как при работе в Google docs. Но данный URL-адрес отображает только результат, страница не содержит никаких меню и кнопок для редактирования. Кроме того, при завершении работы с блокнотом можно создать отчет и при необходимости распечатать его или экспортировать ( Рис.47. ).
Рис. 47. Отчет о работе в Apache Zeppelin
В Arenadata мы считаем, что Spark и Hadoop идеально сочетаются. И что Zeppelin является ключевым компонентом для ускорения решений в области науки о данных.
Apache Zeppelin что это, установка, настройка, анализ данных
2. Установка и настройка Apache Zeppelin.
3. Apache Zeppelin настройка интерпретатора Hive.
4. Apache Zeppelin настройка интерпретатора Spark.
5. Анализ данных в Apache Zeppelin (Hive).
6. Анализ данных в Apache Zeppelin (Spark).
1. Что такое Apache Zeppelin.
Apache Zeppelin — это интерактивная среда с web-интерфейсом, позволяющая взаимодействовать с различными источниками данных, обрабатывать эти данные с помощью языков R и Python, а так же визуализировать результаты анализа.
Обща концепция Apache Zeppelin похожа на Jupyter Notebook, где каждый проект представляет собой файл-ноутбук, состоящий из параграфов. Главной особенностью Zeppelin является концепция интерпретаторов, с помощью которых можно настроить параметры подключения к источникам данных или конфигурацию языка программирования. Так же очень полезна такая штука, как интеграция Zeppelin со Spark и наличие интерпретатора для модуля PySpark.
Самое главное достоинство Apache Zeppelin — простая система визуализации результатов с помощью встроенных инструментов, поэтому не надо париться с matplotlib, например. Визуализаторы настраиваемые, что позволяет по-разному представлять результаты.
Итак, приступим к установке и настройке.
2. Установка и настройка Apache Zeppelin.
Скачаем Apache Zeppelin отсюда, в результате будет скачан архив zeppelin-0.8.2-bin-all.tgz. Далее распакуем архив и скопируем содержимое полученного каталога по следующему пути /usr/local/zeppelin-0.8.2/
Если вы дочитали до этой статьи, то уже знаете, как разархивировать и перемещать каталоги в Линукс, если нет, ознакомьтесь с более ранними статьями.
Теперь можно приступить к настройке, начнем с файла zeppelin-env.sh. Сначала нужно создать этот файл в каталоге установки Zeppelin (у меня /usr/local/zeppelin-0.8.2/conf) из существующего шаблона (template) с помощью команды sudo cp zeppelin-env.sh.template zeppelin-env.sh.
Открыть файл для редактирования:
/usr/local/zeppelin-0.8.2/conf$ sudo gedit zeppelin-env.sh
Теперь нужно раскомментировать или создать (если их нет) следующие параметры:
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64 — путь к jvm/jdk.
export MASTER=spark://master:7077 — имя и порт spark-мастера. Вместо имени (в примере master) может быть IP-адрес.
export SPARK_HOME=/usr/local/spark-2.4.4 — каталог, где установлен spark.
export HADOOP_CONF_DIR=/usr/local/hadoop/hadoop-2.9.1/etc/hadoop — каталог, где установлен hadoop.
export PYSPARK_PYTHON=/usr/bin/python3 каталог, где установлен python, в ubuntu по умолчанию в этом каталоге.
Теперь создаем из шаблона и редактируем файл zeppelin-site.xml
В этом файле меняем следующие параметры:
zeppelin.server.addr — значение (value) имя или IP-адрес машины, где установлен Zeppelin.
zeppelin.server.port — порт web-сервера, у меня 8090.
Запускаем сервер с правами администратора: sudo /usr/local/zeppelin-0.8.2/bin/zeppelin-daemon.sh start
Все готово, запускаем браузер, набираем в адресной строке http://IP-адрес:8090/
Если все удачно, видим следующую картинку
3. Apache Zeppelin настройка интерпретатора Hive.
Для работы с различными источниками данных и запуска скриптов в Apache Zeppelin используются интерпретаторы. Так как у нас уже есть настроенное хранилище Hive, первым делом настроим данный интерпретатор.
Для этого в веб-интерфейсе Zeppelin необходимо открыть выпадающее меню в верхнем правом углу, где указано имя текущего пользователя (по умолчанию Anonimous). По клику появится выпадающее меню, в котором выбираем Interpreter. В результате появится список стандартных интерпретаторов.
Для работы с SQL-базами данных, для которых требуется jdbc-драйвер, внезапно используется интерпретатор jdbc. Находим его и кликаем по кнопке EDIT справа, как показано на рисунке. В результате поля настроек становятся доступны для редактирования. Самая первая группа параметров представлена в виде имя переменной (name) — значение (value), есть также возможность удалить переменную (крестик в поле action). Ну и внизу можно создать новую переменную (кнопка с плюсиком).
Переменные заполнены по умолчанию для Postgre, поэтому внесем изменения в ряд переменных.
Переменная default.driver необходимо установить значение org.apache.hive.jdbc.HiveDriver
Переменная default.url установить значение jdbc:hive2://Master:10003/default;transportMode=http;httpPath=cliservice;
Эти значения зависят от настроек вашего Hive-сервера.
Master:10003 — имя(или IP-адрес) машины, где запущен hive-thrift сервер и порт (у меня 1003, файл hive-site.xml).
default — имя базы данных hive, к которой подключаемся.
transportMode=http — режим взаимодействия с сервером (у меня http, файл hive-site.xml).
httpPath=cliservice — режим взаимодействия через http (у меня cliservice, файл hive-site.xml).
Переменная default.user необходимо установить значение имя пользователя, настроенного для hive в файле hive-site.xml.
Далее необходимо настроить подключаемые зависимости Dependencies, смотрим рисунок.
Здесь нас интересует поле artifact, его значения представлены также на рисунке. Это подключаемые библиотеки для hive (org.apache.hive:hive-jdbc:0.14.0) и для hadoop (org.apache.hadoop:hadoop-common:2.6.0). Следует отметить, что здесь можно указать путь к требуемому файлу, далее для MySQL мы рассмотрим данную возможность.
На этом настройка завершена, необходимо нажать кнопку SAVE, после чего, если нет ошибок, интерпретатор будет доступен в параграфах notebook.
4. Apache Zeppelin настройка интерпретатора Spark.
Для настройки интерпретатора в списке (смотрите предыдущий раздел) найти Spark и кликнуть по кнопке Edit в правом верхнем углу, после чего поля с параметрами станут доступны для редактирования.
Для нас важны следующие переменные:
master — установить значение spark://master:7077. Вместо имени может быть IP-адрес мастера Spark.
zeppelin.pyspark.python — указать каталог установки Python нужной вам версии. У меня это /usr/bin/python3.
На этом все, нажимаем на кнопку Save, и можно приступать к работе.
5. Анализ данных в Apache Zeppelin (Hive).
Итак, у нас все готово к работе: данные в Hive загружены, Hive-сервер и Hadoop (HDFS) на мастере запущены, Spark запущен, Zeppelin тоже работает.
Создаем новый Notebook в Zeppelin. Вкладка Notebook->Create new note.
В открывшемся модальном окне указать имя новой записной книжки и интерпретатор по умолчанию, в нашем случае настроенный ранее jdbc (последнее не обязательно, так как в каждом параграфе указываем в начале интерпретатор). Нажимаем кнопку CREATE и оказываемся в новой записной книжке с первым параграфом. В правом верхнем углу каждого параграфа имеется небольшая панель управления, через которую мы можем запускать содержимое параграфа (треугольник или Shift+Enter) или изменять интерфейс.
В параграфе пишем наш первый запрос к базе: show tables, нажимаем треугольник в правом верхнем углу (Shift+Enter) и видим список таблиц в нашей базе данных.
Для лучшего понимания параграфов лучше напрямую указывать интерпретатор, в нашем случае это будет выглядеть в параграфе так:
show tables
Теперь можно приступить к выполнению запросов к данным в таблице. Если вы не знаете SQL хотя бы на начальном уровне, делать вам тут нечего, бегом учить азы языка!
Запросы могут выдавать либо множество записей, либо количество записей и умный Zeppelin оформит их для вас должным образом.
Если вы хотите получить записи (например SELECT * FROM table), то он выдаст результат в виде таблицы. Тут я не вижу никаких трудностей, если есть вопросы, спрашивайте в группе Вконтакте.
Для анализа данных нам важны количественные характеристики каких либо событий, например, количество сообщений в день, содержащих какое-то слово или количество всех сообщений от каждого источника. Напомню, что на странице размещено описание моей таблицы и ее дамп.
Для получения количества новостей от каждого новостного агентства необходимо выполнить следующий запрос в новом или в том же параграфе:
select agency, count(*) as cnt from mynews group by agency order by cnt
Результат получаем в виде таблицы, но нам нужна столбиковая диаграмма, поэтому в появившемся меню интерфейса вывода жмем на Bar Chart, вторая кнопка слева и видим чудо!
Вы должны получить на выходе что-то похожее на то, что есть на рисунке. Если ничего нет, или график не очень, нужно кликнуть по вкладке Settings и настроить значения по осям с помощью drug-n-drop.
По оси Х(keys) — то, что считаем, по оси Y(values) — значения счета.
Теперь вы готовы для выполнения других запросов, если есть вопросы, пишите в группу Вконтакте.
6. Анализ данных в Apache Zeppelin (Spark).
В предыдущем разделе мы построили красивый график статистики по информационным источникам. Если же выполнить запрос по выборке количества сообщений, содержащих какое-либо слово, мы натолкнемся на некоторые ограничения, связанные с SQL (график увидим ниже). Запрос выглядит так:
SELECT DATE(time_new) as dt , count (*) FROM mynews WHERE text like ‘%Aramco%’ GROUP BY DATE(time_new) order by dt
Дело в том, что на графике будут отражены только те даты, где встречалось заданное слово (в примере Aramco)
Нам же зачастую для подсчета статистики важны и даты с нулевыми значениями, вот тут нам на помощь приходит PySpark!
PySpark — это библиотека для языка Python, позволяющая производить распределенную обработку с использованием Spark. Для понимания библиотеки необходимо изучить ее особенности с помощью дополнительной литературы, например «Изучаем Spark». Сам я ознакомился только с азами, но этого мне хватило для решения первой задачи: дополнить массив данных, полученный с помощью SQL, нулевыми интервалами. Хотя для этого мне понадобился только Python, так как обработка осуществлялась в основном локально.
Приступим. В разделе 4 мы настроили интерпретатор Spark, наш скрипт можно выполнять в нем без указания интерпретатора. Однако нам нужно сравнивать результаты с SQL, поэтому создадим новый параграф в уже имеющемся блокноте Hive и укажем необходимый интерпретатор %spark.pyspark. По умолчанию интерпретаторы уже подключены к записной книжке, но на всякий случай упомяну, что их можно подключить вручную во вкладке Interpreter Bindibg в правом верхнем углу книжки, а не параграфа! Подключенные интерпретаторы подсвечены неким бирюзовым цветом, да ладно, голубоватым! Смотрим рисунок.
Если интерпретатор Spark в нужном цвете, все готово, можно продолжать.
Теперь все готово для преобразования данных, полученных из таблицы Hive. Так как мы собираемся строить график, установим библиотеку matplotlib в консоли ОС с помощью pip.
Из распределенных задач у нас будет только одна — запрос к таблице Hive, это можно делать либо через Spark.sql, либо через Spark.HiveContext.
Воспользуемся первым вариантом:
SDF1 = spark.sql(«SELECT DATE(time_new) as dt , count (*) FROM mynews WHERE text like ‘%Aramco%’ GROUP BY DATE(time_new) order by dt»)
В результате получаем особый тип распределенных данных — DataFrame, он пока хранится распределённо, чтобы его собрать, используется функция collect().
После этого мы можем работать с данными как с обычным кортежем.
Весь скрипт в скриншот не помещается, поэтому разбил на два: чтение данных и дополнение нулевых дат и построение графика.
Чтение данных и дополнение нулевых дат:
Построение графика:
Жмем треугольник в правом верхнем углу параграфа, ждем продолжительное время при первом запуске, и наблюдаем чудесные графики, в примере приведены для сравнения matplotlib с дополнением нулевых дат и стандартный вывод Zeppelin для запроса к Hive.
График не такой красивый, но зато более информативный, да и в результате мы имеем два кортежа с датами и соответствующими им частотами. Что делать дальше с этими данными, решать вам.
Если кому-то надо, могу скидывать дампы базы в CSV-формате на яндекс диск или сюда, кому надо это, пишите в группу Вконтакте
Чем Apache Zeppelin лучше Jupyter Notebook для интерактивной аналитики Big Data: 4 ключевых преимущества
В этой статье мы рассмотрим, что такое Apache Zeppelin, как он полезен для интерактивной аналитики и визуализации больших данных (Big Data), а также чем этот инструмент отличается от популярного среди Data Scientist’ов и Python-разработчиков Jupyter Notebook.
Что такое Apache Zeppelin и чем он полезен Data Scientist’у
Начнем с определения: Apache Zeppelin — это интерактивный веб-блокнот (или «ноутбук» от notebook) с открытым исходным кодом, который поддерживает практически все этапы работы с данными в Data Science, от извлечения до визуализации, в т.ч. интерактивный анализ и совместное использование документов. Он интегрирован с Apache Spark, Flink, Hadoop, множеством реляционных и NoSQL-СУБД (Cassandra, HBase, Hive, PostgreSQL, Elasticsearch, Google Big Query, Mysql, MariaDB, Redshift), а также поддерживает различные языки программирования, популярные в области Big Data: Python, PySpark, R, Scala, SQL. Такая многофункциональность обеспечивается за счет интерпретаторов — плагинов для поддержки языка программирования, базы данных или фреймворка.
С точки зрения работы с большими данными, отдельного упоминания заслуживает встроенная интеграция с Apache Spark, что дает общие контексты (SparkContext и SQLContext), загрузку jar-зависимостей из локальной файловой системы или репозитория maven во время выполнения задачи, а также возможность отмены задания и отображение хода его выполнения. Также Цеппелин поддерживает работу с REST-API Apache Spark — Livy, о котором мы подробно писали здесь. Благодаря интерпретатору Python, Apache Zeppelin предоставляет все возможности этого языка, ориентированные на Data Science, например, специализированные библиотеки (Matplotlib, Conda, Pandas и пр.) для аналитики больших данных и визуализации. Это позволяет автоматически построить круговые, столбчатые и прочие наглядные диаграммы, чтобы визуализировать статистику датасета или результатов исследования. Также в Zeppelin можно создавать интерактивные дэшборды с формами ввода данных, которые будут выглядеть как веб-страницы, чтобы поделиться их URL-адресами для совместной работы. Для многопользовательского режима Zeppelin поддерживает LDAP-авторизацию с настройками доступа [1].
Впрочем, при всех этих достоинствах, на практике можно столкнуться со следующими ограничениями Apache Zeppelin, которые могут рассматриваться как недостатки [2]:
· нестабильная работа под высокой нагрузкой;
· интерактивный веб-интерфейс требует много оперативной памяти;
· отсутствие полного набора возможностей современных специализированных IDE;
· меньшая «зрелость» и популярность по сравнению с Jupyter Notebook.
Тем не менее, Apache Zeppelin завоевывает свою нишу, конкурируя с Jupyter Notebook в некоторых кейсах работы с большими данными. В каких случаях аналитику Big Data или Data Scientist’у следует предпочесть Apache Zeppelin вместо Jupyter Notebook, мы рассмотрим далее.
Apache Zeppelin vs Jupyter Notebook: что и когда выбирать для аналитики Big Data
Прежде всего, отметим, что оба инструмента относятся к open-source и являются веб-блокнотами для разработки и визуализации данных. Однако, Jupyter позиционируется как многоязычная интерактивная вычислительная среда, с поддержкой кода, уравнений, текстов, графиков и интерактивных дэшбордов. Apache Zeppelin не претендует на лавры IDE, хотя и включает некоторые функции для разработки ПО, фокусируясь на возможностях для интерактивного анализа больших данных. Разберем, как оба блокнота отличаются по следующим критериям, важных с точки зрения работы с Big Data [3]:
· безопасность и многопользовательские возможности, которые Jupyter не поддерживает по умолчанию, в отличие от Zeppelin. Кроме того, в Jupyter нет возможности обеспечения конфиденциальности конечных пользователей. Zeppelin позволяет гибко настраивать конфигурации безопасности, включая конфиденциальность программного кода, через LDAP/Active Directory и специально определенные группы безопасности. Он использует только один серверный процесс, аутентифицируя пользователей в настроенной системе, прежде чем разрешить дальнейший доступ, чтобы делиться информацией только с ограниченным кругом лиц с определенными правами.
· визуализация — благодаря возможности использовать разные интерпретаторы в одном блокноте, Zeppelin выигрывает по сравнению с Jupyter, в котором нет параметров построения диаграмм. В Jupyter есть библиотека plotly, которая выводит диаграмму в блокнот, тогда как Zeppelin поддерживает только содержимое Matplotlib — Python-библиотеку построения двумерных графиков, которая просто сохраняет вывод в HTML-файл.
· описание отчетов — оба инструмента поддерживают markdown-разметку, но Zeppelin быстрее создает интерактивные формы и визуализацию результатов. Кроме того, Цеппелин-отчеты более доступны для конечных пользователей и могут быть экспортированы в формат CSV или TSV. Zeppelin позволяет скрыть код, предоставляя читаемые интерактивные отчеты конечным пользователям.
· кластерная интеграция — Zeppelin является частью экосистемы Apache Hadoop и хорошо интегрируется со Spark, Pig, Hive и другими ее компонентами.
· удобство разработки — в отличие от Jupyter, Zeppelin позволяет комбинировать несколько параграфов в одну строку, однако, редактор кода и параграфов в Jupyter кажутся более эффективными, поскольку имеют больше быстрых комбинаций (т.н. «горячих клавиш») и функцию автозаполнения.
· производственная эксплуатация (production) — поскольку Zeppelin зависит от емкости кластера, то при недостатке ресурсов или большом количестве пользователей (более 10), возможны сбои и зависания, которые не характерны для Jupyter.
Подводя итоги, отметим, что Apache Zeppelin — отличный инструмент для аналитики больших данных в экосистеме Hadoop. Он упрощает разработку Spark-приложений и ориентирован на корпоративных пользователей, обеспечивая интеграцию с LDAP, управление разрешениями и интерактивную визуализацию при достаточном количестве ресурсов кластера. Поэтому неслучайно, отечественный разработчик Big Data решений для корпоративных целей, компания Аренадата Софтвер, включила Apache Zeppelin в свой новый продукт — Arenadata Analytic Workspace (AAW), который представляет собой самообслуживаемый сервис (Self-Service) DataScience и BI [4].
В свою очередь, Jupyter Notebook требует меньше накладных расходов на настройку и создание разработанных шаблонов благодаря автономному характеру. А благодаря большому количеству IDE-функций, расширений и поддержке фреймворков машинного обучения (Machine Learning) и других методов искусственного интеллекта, он стал весьма популярным среди индивидуальных Data Science-исследователей [3].
Как на практике эффективно использовать Apache Zeppelin со Spark и другими компонентами экосистемы Hadoop для аналитики больших данных в проектах цифровизации своего бизнеса, а также государственных и муниципальных предприятий, вы узнаете на специализированных курсах в нашем лицензированном учебном центре обучения и повышения квалификации для разработчиков, менеджеров, архитекторов, инженеров, администраторов, Data Scientist’ов и аналитиков Big Data в Москве:
Apache Zeppelin
Web-based notebook that enables data-driven,
interactive data analytics and collaborative documents with SQL, Scala, Python, R and more.
Technologies
See more details in Zeppelin supports 20+ different interpreters. LEARN MORE
Deployments
What’s new in
Zeppelin SDK
Not only you can use Zeppelin as interactive notebook, you can also use it as JobServer via Zeppelin SDK (client api & session api)
Spark Interpreter Improved
Spark interpreter provides comparable Python & R user experience like Jupyter Notebook. For the details, click here.
Flink Interpreter Improved
Flink interpreter is refactored, supports Scala, Python & SQL. Flink 1.10 and afterwards (Scala 2.11 & 2.12) are all supported.
For the details, click here.
Yarn Interpreter Mode
You can run interpreter in yarn cluster, e.g. you can run Python interpreter in yarn and R interpreter in yarn.
Inline Configuration
Generic ConfInterpreter provide a way configure interpreter inside each note.
Interpreter Lifecycle Management
Interpreter lifecycle manager automatically terminate interpreter process on idle timeout. So resources are released when they’re not in use. See here for more details.
See more details in 0.10 Release Note
What is Apache Zeppelin ?
Multi-purpose Notebook
The Notebook is the place for all your needs
- Data Ingestion
- Data Discovery
- Data Analytics
- Data Visualization & Collaboration
Multiple Language Backend
Apache Zeppelin interpreter concept allows any language/data-processing-backend to be plugged into Zeppelin. Currently Apache Zeppelin supports many interpreters such as Apache Spark, Apache Flink, Python, R, JDBC, Markdown and Shell.
Adding new language-backend is really simple. Learn how to create a new interpreter.
Apache Spark integration
Especially, Apache Zeppelin provides built-in Apache Spark integration. You don't need to build a separate module, plugin or library for it.
Apache Zeppelin with Spark integration provides
- Automatic SparkContext and SQLContext injection
- Runtime jar dependency loading from local filesystem or maven repository. Learn more about dependency loader.
- Canceling job and displaying its progress
For the further information about Apache Spark in Apache Zeppelin, please see Spark interpreter for Apache Zeppelin.
Data visualization
Some basic charts are already included in Apache Zeppelin. Visualizations are not limited to SparkSQL query, any output from any language backend can be recognized and visualized.
Pivot chart
Apache Zeppelin aggregates values and displays them in pivot chart with simple drag and drop. You can easily create chart with multiple aggregated values including sum, count, average, min, max.
Learn more about basic display systems and Angular API(frontend , backend) in Apache Zeppelin.
Dynamic forms
Apache Zeppelin can dynamically create some input forms in your notebook.
Collaborate by sharing your Notebook & Paragraph
Your notebook URL can be shared among collaborators. Then Apache Zeppelin will broadcast any changes in realtime, just like the collaboration in Google docs.
Apache Zeppelin provides an URL to display the result only, that page does not include any menus and buttons inside of notebooks. You can easily embed it as an iframe inside of your website in this way. If you want to learn more about this feature, please visit this page.
100% Opensource
Apache Zeppelin is Apache2 Licensed software. Please check out the source repository and how to contribute. Apache Zeppelin has a very active development community. Join to our Mailing list and report issues on Jira Issue tracker.