Как вызвать Python Jupyter Notebook через API REST, размещенный в Azure HDInsight?

Я уже установил HDInsight. В то же время я создал несколько файлов, используя PySpark с поддержкой Python 3.

Я собираюсь позвонить в эту записную книжку Python через REST API, и Livy Server, похоже, является шагом вперед.

Проблема, с которой я сталкиваюсь, заключается в том, что с Livy Server не работает Python Notebook.

Можно ли как-нибудь разрешить внешний вызов Python Notebooks через API Livy?

1 ответ

Если я правильно понял ваш вопрос, у вас есть:

  • работающий кластер Spark в HDInsight
  • записная книжка на Python (я предполагаю, что это Jupyter), которая у вас есть либо на локальном компьютере, либо на виртуальной машине.

Если это так, вы можете настроить sparkmagic на своем локальном компьютере и настроить.configфайл в sparkmagic, чтобы подключиться к кластеру HDInsight Spark.Установите блокнот Jupyter на свой компьютер и подключитесь к Apache Spark в HDInsight

sparkmagic - это живой клиент для интерактивной работы с удаленными кластерами Spark через Livy.

Не уверен насчет ноутбука, но HDInsight SDK для Python предоставляет классы и методы, которые позволяют вам управлять кластерами HDInsight. Он включает в себя операции по созданию, удалению, обновлению, списку, изменению размера, выполнению действий сценария, мониторингу, получению свойств кластеров HDInsight и многому другому.

Пакет PIP для того же:

pip install azure-mgmt-hdinsight

Сначала SDK должен быть аутентифицирован с вашей подпиской Azure.

Авторизоваться:

from azure.mgmt.hdinsight import HDInsightManagementClient
from azure.common.credentials import ServicePrincipalCredentials
from azure.mgmt.hdinsight.models import *

# Tenant ID for your Azure Subscription
TENANT_ID = ''
# Your Service Principal App Client ID
CLIENT_ID = ''
# Your Service Principal Client Secret
CLIENT_SECRET = ''
# Your Azure Subscription ID
SUBSCRIPTION_ID = ''

credentials = ServicePrincipalCredentials(
    client_id = CLIENT_ID,
    secret = CLIENT_SECRET,
    tenant = TENANT_ID
)

client = HDInsightManagementClient(credentials, SUBSCRIPTION_ID)

HDInsight предоставляет метод конфигурации, называемый действиями сценария, который вызывает пользовательские сценарии для настройки кластера.

script_action1 = RuntimeScriptAction(name="<Script Name>", uri="<URL To Script>", roles=[<List of Roles>]) #valid roles are "headnode", "workernode", "zookeepernode", and "edgenode"

client.clusters.execute_script_actions("<Resource Group Name>", "<Cluster Name>", <persist_on_success (bool)>, script_actions=[script_action1]) #add more RuntimeScriptActions to the list to execute multiple scripts

Чтобы отобразить все сохраненные действия сценария для указанного кластера:

scripts_paged = client.script_actions.list_persisted_scripts(resource_group_name, cluster_name)
while True:
  try:
    for script in scripts_paged.advance_page():
      print(script)
  except StopIteration:
    break

Посмотрите, поможет ли это.

Другие вопросы по тегам