Есть ли разумный способ написать внешнюю библиотеку Python с вызовами mssparkutils?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Есть ли разумный способ написать внешнюю библиотеку Python с вызовами mssparkutils?

Сообщение Anonymous »

Мне было поручено прояснить и упростить довольно запутанную кодовую базу, которая в настоящее время существует в виде серии runbooks в Azure Synapse. Я подумал, что в рамках этого процесса было бы неплохо перенести часть более сложного анализа данных во внешнюю библиотеку Python. Таким образом, мы можем заниматься разработкой любого программного обеспечения локально, что обычно происходит намного быстрее; мы также можем проводить модульное тестирование локально, что позволяет быстрее отслеживать ошибки и исправлять их.
Однако на раннем этапе я столкнулся с проблемой, связанной со всем, что связано с

Код: Выделить всё

mssparkutils
[/b] объект. Вы можете свободно вызывать этот объект внутри самих модулей Runbook, но если вы попытаетесь вызвать этот объект в библиотеке, импортированной в модуль Runbook, ваш код выйдет из строя.
Я обнаружил пустышку -notebookutils ранее сегодня, и я подумал, что это может быть моим спасением, но теперь кажется, что мне не повезло. Я использую его в библиотеке следующим образом:

Код: Выделить всё

from notebookutils import mssparkutils
from pathlib import Path

def copy_file_to_folder(path_to_file: str, path_to_folder: str) -> str:
mssparkutils.fs.cp(path_to_file, f"file:{path_to_folder}")
# Return path to which file was copied.
result = str(Path(path_to_folder)/Path(path_to_file).name)
return result
Это определенно делает то, что я хочу локально, т. е. mssparkutils ничего не делает. Но я сталкиваюсь с, казалось бы, непреодолимыми проблемами, когда пытаюсь импортировать эту библиотеку в Runbook. В частности, если я попытаюсь запустить эту строку:

Код: Выделить всё

props = json.loads(mssparkutils.credentials.getPropertiesAll(linked_service))
Это дает мне исключение:

Код: Выделить всё

NameError: name 'mssparkutils' is not defined
Если я попытаюсь решить проблему, разместив над ней импорт:

Код: Выделить всё

from notebookutils import mssparkutils
Тогда mssparkutils.credentials.getPropertiesAll(linked_service) возвращает пустую строку (чего раньше не было), и поэтому json.loads() аварийно завершает работу.
Похоже, что само наличие этого импорта dummy-notebookutils мешает встроенному mssparkutils и, таким образом, вызывает хаос.
Есть ли разумный способ написания внешних библиотек для использования в Synapse, как этот? Или весь мой подход неправильный? Есть ли способ использовать dummy-notebookutils, чтобы избежать сбоя Runbook?
Я подумывал просто обернуть всю библиотеку в большой класс, а затем , внутри записной книжки, передавая объект mssparkutils в конструктор. Это, вероятно, сработает, но разрушит существующую структуру кодовой базы, чего я не хочу делать, если есть какая-либо жизнеспособная альтернатива.

Подробнее здесь: https://stackoverflow.com/questions/792 ... utils-call
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Есть ли разумный способ написать внешнюю библиотеку Python с вызовами mssparkutils?
    Anonymous » » в форуме Python
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • Есть ли способ сбросить внешнюю библиотеку на Pycharm?
    Anonymous » » в форуме Python
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous
  • Есть ли способ сбросить внешнюю библиотеку на Pycharm?
    Anonymous » » в форуме Python
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • Более разумный способ «сместить» элемент из его контейнера (с фоном)?
    Anonymous » » в форуме CSS
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous
  • Более разумный способ перегрузить методы?
    Anonymous » » в форуме C#
    0 Ответы
    23 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»