Python 2 & 3 Интерпретатор для Apache Zeppelin¶
Конфигурирование¶
Для настройки Python для Apache Zeppelin необходимо задать параметры, представленные в таблице.
Параметр | Значение по умолчанию | Описание |
---|---|---|
zeppelin.python | python | Путь к уже установленному бинарному пакету Python (может быть python2 или python3). Если python не прописан в $PATH, можно задать полный путь (например: /usr/bin/python) |
zeppelin.python.maxResult | 1000 | Максимальное количество отображаемых строк датафрейма |
Включение интерпретатора Python¶
Для включения интерпретатора Python в блокноте необходимо нажать значок “Gear” и выбрать “Python”.
Использование интепретатора Python¶
Для выбора интерпретатора Python необходимо в параграфе указать %python, а затем ввести все команды. Интерпретатор может работать, только если уже установлен python (интерпретатор не предоставляет собственные бинарные файлы python). Получить справку можно вызовом команды help().
Переменные окружения Python¶
- По умолчанию
По умолчанию PythonInterpreter использует команду python, определенную в свойстве zeppelin.python для запуска процесса python. Интерпретатор может использовать все установленные модули (с помощью pip, easy_install и других)
- Conda
Conda – это система управления пакетами и переменными окружения python. Интерпретатор %python.conda позволяет переключаться между переменными окружения.
Перечень переменных окружения:
%python.conda
Активация переменных окружения:
%python.conda activate [ENVIRONMENT_NAME]
Деактивация переменных окружения:
%python.conda deactivate
- Докер
Интерпретатор %python.docker позволяет PythonInterpreter создавать процесс python в указанном докер-контейнере.
Активация переменных окружения:
%python.docker activate [Repository] %python.docker activate [Repository:Tag] %python.docker activate [Image Id]
Деактивация переменных окружения:
%python.docker deactivate
Пример:
# activate latest tensorflow image as a python environment %python.docker activate gcr.io/tensorflow/tensorflow:latest
Использование Zeppelin Dynamic Forms¶
Динамическую форму Zeppelin можно использовать внутри кода Python (см. подробное описание).
Zeppelin Dynamic Form может использоваться только в том случае, если в системе установлена py4j Python library. Библиотеку можно установить с помощью pip install py4j.
Пример:
%python ### Input form print (z.input("f1","defaultValue")) ### Select form print (z.select("f1",[("o1","1"),("o2","2")],"2")) ### Checkbox form print("".join(z.checkbox("f3", [("o1","1"), ("o2","2")],["1"])))
Интеграция Matplotlib¶
Интерпретатор Python может автоматически отображать графики matplotlib с помощью встроенного модуля pyplot:
%python import matplotlib.pyplot as plt plt.plot([1, 2, 3])
Это рекомендуемый метод использования matplotlib из блокнота Zeppelin. Выходные данные команды по умолчанию преобразовываются в HTML, неявно используя %html. Дополнительные настройки можно выполнить с помощью встроенного метода z.configure_mpl(). Например:
z.configure_mpl(width=400, height=300, fmt='svg') plt.plot([1, 2, 3])
В данном примере изображение задается в формате SVG 400x300, которое по умолчанию обычно представляется в формате 600x400 и PNG соответственно. В дальнейшем можно будет использовать другую библиотеку, angular, которая позволит обновлять график, созданный одним параграфом, непосредственно из другого (выходные данные в таком случае %angular вместо %html). Функция уже доступна в интерпретаторе pyspark.
Если Zeppelin не может найти файлы matplotlib (которые обычно находятся в $ZEPPELIN_HOME/interpreter/lib/python) в PYTHONPATH, то программа автоматически устанавливается в agg и нижеприведенные инструкции могут использоваться с ограничениями.
Если не удается загрузить встроенные модули, можно использовать z.show(plt):
python %python import matplotlib.pyplot as plt plt.figure() (.. ..) z.show(plt) plt.close()
Данная функция z.show() может принимать дополнительные параметры для адаптации размеров графика (ширина и высота), а также его выходной формат – png или опционально svg (Рис.26.):
%python z.show(plt, width='50px') z.show(plt, height='150px', fmt='svg')

Рис. 26. Интеграция Matplotlib
Интеграция с Pandas¶
Система отображения таблиц Apache Zeppelin предоставляет встроенные возможности визуализации данных. Интерпретатор Python использует его для визуализации датафреймов Pandas, аналогично через API функции z.show() как в случае интеграции с библиотекой matplotlib (Интеграция Matplotlib). Например:
import pandas as pd rates = pd.read_csv("bank.csv", sep=";") z.show(rates)
SQL поверх датафреймов Pandas¶
Существует удобный интерпретатор %python.sql, который по своему использованию похож на Apache Spark в Zeppelin и позволяет использовать язык SQL для запроса к датафреймам Pandas и визуализации результатов через встроенную систему отображения таблиц Table Display System.
Предварительные настройки:
- Pandas pip install pandas
- PandaSQL pip install -U pandasql
В случае, если по умолчанию выбран интерпретатор Python (первый в списке интерпретаторов под значком шестеренки), можно его указывать как просто %sql:
Первый параграф:
import pandas as pd rates = pd.read_csv("bank.csv", sep=";")
Следующий параграф:
%sql SELECT * FROM rates WHERE age < 40
В противном случае – %python.sql.
Техническое описание¶
Подробные технические сведения о текущей реализации приведены по ссылке python/README.md.
Некоторые функции, еще не реализованные в интерпретаторе Python:
- Прерывание выполнения параграфа (способ cancel ()) в настоящее время поддерживается только в системах Linux и MacOs. Если интерпретатор запущен в другой ОС (например, в MS Windows), прерывание параграфа завершает работу всего процесса интерпретатора. JIRA ticket (ZEPPELIN-893) открыт для реализации этой функции в следующей версии интерпретатора;
- Строка состояния в web-интерфейсе (метод getProgress()) в настоящее время не реализована;
- Завершение кода в настоящее время не реализовано.