Python 2 & 3 Интерпретатор для Apache Zeppelin

Конфигурирование

Для настройки Python для Apache Zeppelin необходимо задать параметры, представленные в таблице.

Табл. 4. Параметры конфигурации
Параметр Значение по умолчанию Описание
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')
../_images/zeppelin_python_matplotlib.png

Рис. 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()) в настоящее время не реализована;
  • Завершение кода в настоящее время не реализовано.