Перейти к содержанию

Ноутбуки

Работа с ноутбуками

Общие термины

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

Для работы с ноутбуками необходимо иметь права на доступ к ноутбуку

Для работы с ноутбуками добавлен новый раздел администрирования "Ноутбуки".

JupyterHub

При нажатии на кнопку "Ноутбуки" открывается новая вкладка с приложением JupyterHub.

JupyterHub запуск сессии

На форме присутствует выпадающее меню с выбором доступных пользователю образов jupyter.

И кнопка для ограничения пользовательской сессии по сети.

img.png

JupyterHub домашняя страница

Домашняя страница содержит в себе кнопку, которая перенаправляет пользователя на страницу запуска сессий. img.png

JupyterLab

Домашняя страница

JupyterLab имеет многофункциональный интерфейс, который включает в себя следующие компоненты:

  1. Файл (File): здесь можно создавать, открывать и сохранять документы.
  2. Ячейки (Cells): ячейки, в которых можно писать код или текст (Markdown).
  3. Панель инструментов (Toolbar): для быстрого доступа к основным функциям.

img.png

Классический Notebook

Для работы с классическим интерфейсом ноутбука необходимо открыть нужный ноутбук, в панели инструментов появится кнопка "Notebooks", которая перенаправит пользователя на новую вкладку с нужным ноутбуком.

img.png

vmResource

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

Импорт зависимостей

Импорт классов для работы с vmResource
# объект для работы с ресурсами платформы
from calculator.system import vmResource
# базовый класс для обработки ошибок
from core.errors import CException
...

Инициализация VmResource

Инициализация vmResource реализована через lazy-load imports, для этого используются переменные окружения пользовательского контейнера.

Для пользователя в версии пакета vm_resource@0.1.0 представлено 2 варианта использования vmResource - rest и hybrid.

Работа с ресурсами БД в VmResource

API для работы с подключениями

API для работы с подключениями идентично встроенному в блок "Python" пакету VmResource, документацию можно посмотреть здесь - vmResource

Пример кода для работы с VmResource
from uuid import UUID
from typing import Optional, Union, Any, Sequence, Mapping

from calculator.system import vmResource

id_connection: Union[str, UUID] = "..."

# выполнение запроса через метод execute
query: str = "select 1;"
query_params: Union[Sequence, Mapping] = (...)
result: Any = vmResource.execute(id_connection, query, query_params)

# выполнение запроса на вставку
query = "..."
query_params = (...)
page_size: Optional[int] = 10
template: Optional[str] = (...)
vmResource.package_insert(
    query,
    query_params,
    page_size,
    template
)

# параметризация запроса
query = "..."
query_params = (...)
result: str = vmResource.get_mogrify(id_connection, query, query_params)
Пример кода для работы с подключениями
from uuid import UUID
from typing import Optional, Union, Any, Sequence, Mapping

from calculator.system import vmResource
from core.errors import CException

id_connection: Union[str, UUID] = "..."
query: str = "..."
query_params: Union[Sequence, Mapping] = (...)

# пример для Rest VmResource
connection: IConnection = vmResource.get_connection_by_id(id_connection)
result: Any = connection.execute(query, query_params)

# пример для Hybrid VmResource
connection: IConnection = vmResource.get_connection_by_id(id_connection)
try:
    for i in range(...):
        connection.execute(
            query,
            query_params,
            final_commit=False
        )
    connection.commit()
except CException as e:
    print(e.message)
    connection.rollback()
Пример кода для работы с курсорами
import threading
from uuid import UUID
from typing import Optional, Union, Any, Sequence, Mapping

from calculator.system import vmResource
from core.errors import CException


id_connection: Union[str, UUID] = "..."
query: str = "..."
query_params: Union[Sequence, Mapping] = (...)
connection: IConnection = vmResource.get_connection_by_id(id_connection)

try:
    threads_num = 10
    threads: List[threading.Thread] = []
    for i in range(threads_num):
        cursor = connection.create_cursor()
        threads.append(threading.Thread(
            target=cursor.execute,
            args=(query, query_params),
            kwargs={"final_commit": False}
        ))

    for thread in threads:
        thread.start()

    for thread in threads:
        thread.join()

    connection.commit()
except CException as e:
    print(e.message)
    connection.rollback()

Режимы работы vmResource

Изоляция по сети

Если контейнер изолирован по сети, то используется Rest VmResource.

Rest VmResource

Предоставляет работу с ресурсами платформы через API.

Hybrid VmResource

Предоставляет гибридную работу с ресурсами платформы, т.е. получение ресурсов осуществляется через API платформы, работа непосредственно нативная (там где это возможно, например, подключения к БД).

Rest VmResource

Для реализации Rest VmResource отсутствует работа с курсорами и нет поддержки транзакций (атомарное выполнение нескольких операций в рамках одного подключения). В случае вызова данных методов будет сгенерировано исключение CException.UnsupportedMethod