Ноутбуки
Работа с ноутбуками
Общие термины
- Ноутбук - это интерактивная среда для написания кода на Python, которая широко используется в анализе данных и научных исследованиях. Ноутбуки функционально похожи на блоки Python в графах платформы и облегчают разработку и отладку пользовательского кода
- Образ ноутбука - шаблон для запуска пользовательского ноутбука. В образах могут варьироваться версия язык Python, а также набор библиотек
Для работы с ноутбуками необходимо иметь права на доступ к ноутбуку
Для работы с ноутбуками добавлен новый раздел администрирования "Ноутбуки".
JupyterHub
При нажатии на кнопку "Ноутбуки" открывается новая вкладка с приложением JupyterHub.
JupyterHub запуск сессии
На форме присутствует выпадающее меню с выбором доступных пользователю образов jupyter.
И кнопка для ограничения пользовательской сессии по сети.
JupyterHub домашняя страница
Домашняя страница содержит в себе кнопку, которая перенаправляет пользователя на страницу запуска сессий.

JupyterLab
Домашняя страница
JupyterLab имеет многофункциональный интерфейс, который включает в себя следующие компоненты:
- Файл (File): здесь можно создавать, открывать и сохранять документы.
- Ячейки (Cells): ячейки, в которых можно писать код или текст (Markdown).
- Панель инструментов (Toolbar): для быстрого доступа к основным функциям.
Классический Notebook
Для работы с классическим интерфейсом ноутбука необходимо открыть нужный ноутбук, в панели инструментов появится кнопка "Notebooks", которая перенаправит пользователя на новую вкладку с нужным ноутбуком.
vmResource
Для работы с ресурсами платформы в образы ноутбуков поставляется пакет, аналогичный vmResource.
Импорт зависимостей
Импорт классов для работы с vmResource
Инициализация 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





