Создание кластера и базы данных Azure Data Explorer с использованием Python

В этой статье вы создадите кластер и базу данных Azure Data Explorer с помощью Python. Azure Data Explorer — это быстрая и полностью управляемая служба для аналитики большого объема потоковых данных в реальном времени, поступающих из приложений, а также с веб-сайтов, устройств Интернета вещей и т. д. Чтобы использовать обозреватель данных Azure, сначала создайте кластер, а затем одну или несколько баз данных в этом кластере. Затем вставьте или загрузите данные в базу данных, чтобы вы могли выполнять запросы к ней.

Предварительные требования

Установка пакета Python

Чтобы установить пакет Python для Azure Data Explorer (Kusto), откройте окно командной строки с Python в пути. Выполните следующую команду:

pip install azure-common
pip install azure-mgmt-kusto

Аутентификация

Для выполнения примеров из этой статьи нам потребуется приложение Azure AD и субъект-служба, которые могут получить доступ к ресурсам. Установите флажок создать приложение Azure AD, чтобы создать бесплатное приложение Azure AD и добавить назначение ролей в области подписки. Также показано, как получить Directory (tenant) ID, Application ID, и Client Secret.

Создание кластера Azure Data Explorer

  1. Создайте кластер, используя приведенную ниже команду:

    from azure.mgmt.kusto import KustoManagementClient
    from azure.mgmt.kusto.models import Cluster, AzureSku
    from azure.common.credentials import ServicePrincipalCredentials
    
    #Directory (tenant) ID
    tenant_id = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx"
    #Application ID
    client_id = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx"
    #Client Secret
    client_secret = "xxxxxxxxxxxxxx"
    subscription_id = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx"
    credentials = ServicePrincipalCredentials(
        client_id=client_id,
        secret=client_secret,
        tenant=tenant_id
    )
    
    location = 'Central US'
    sku_name = 'Standard_D13_v2'
    capacity = 5
    tier = "Standard"
    resource_group_name = 'testrg'
    cluster_name = 'mykustocluster'
    cluster = Cluster(location=location, sku=AzureSku(name=sku_name, capacity=capacity, tier=tier))
    
    kusto_management_client = KustoManagementClient(credentials, subscription_id)
    
    cluster_operations = kusto_management_client.clusters
    
    poller = cluster_operations.create_or_update(resource_group_name, cluster_name, cluster)
    poller.wait()
    
    Параметр Рекомендуемое значение Описание поля
    cluster_name mykustocluster Необходимое имя кластера.
    sku_name Standard_D13_v2 Номер SKU, который будет использоваться для кластера.
    Уровень Standard Edition Уровень SKU.
    Емкость number Количество экземпляров кластера.
    resource_group_name testrg Имя группы ресурсов, в которой будет создан кластер.

    Примечание

    Создание кластера — это длительная операция. Метод create_or_update возвращает экземпляр LROPoller, см. Класс LROPoller class для получения дополнительной информации.

  2. Чтобы проверить, успешно ли создан кластер, можно выполнить следующую команду:

    cluster_operations.get(resource_group_name = resource_group_name, cluster_name= cluster_name, custom_headers=None, raw=False)
    

Если результат содержит параметр provisioningState со значением Succeeded, это означает, что кластер создан успешно.

Создание базы данных в кластере Azure Data Explorer

  1. Создайте базу данных, используя приведенную ниже команду:

    from azure.mgmt.kusto import KustoManagementClient
    from azure.common.credentials import ServicePrincipalCredentials
    from azure.mgmt.kusto.models import ReadWriteDatabase
    from datetime import timedelta
    
    #Directory (tenant) ID
    tenant_id = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx"
    #Application ID
    client_id = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx"
    #Client Secret
    client_secret = "xxxxxxxxxxxxxx"
    subscription_id = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx"
    credentials = ServicePrincipalCredentials(
        client_id=client_id,
        secret=client_secret,
        tenant=tenant_id
    )
    
    location = 'Central US'
    resource_group_name = 'testrg'
    cluster_name = 'mykustocluster'
    soft_delete_period = timedelta(days=3650)
    hot_cache_period = timedelta(days=3650)
    database_name = "mykustodatabase"
    
    kusto_management_client = KustoManagementClient(credentials, subscription_id)
    
    database_operations = kusto_management_client.databases
    database = ReadWriteDatabase(location=location,
                        soft_delete_period=soft_delete_period,
                        hot_cache_period=hot_cache_period)
    
    poller = database_operations.create_or_update(resource_group_name = resource_group_name, cluster_name = cluster_name, database_name = database_name, parameters = database)
    poller.wait()
    

    Примечание

    Если вы используете Python версии 0.4.0 или ниже, используйте базу данных вместо ReadWriteDatabase.

    Параметр Рекомендуемое значение Описание поля
    cluster_name mykustocluster Имя кластера, в котором необходимо создать базу данных.
    database_name mykustodatabase Имя базы данных.
    resource_group_name testrg Имя группы ресурсов, в которой будет создан кластер.
    soft_delete_period 3650 days, 0:00:00 Время, на протяжении которого данные будут храниться таким образом, чтобы они были доступны для запроса.
    hot_cache_period 3650 days, 0:00:00 Время, на протяжении которого данные будут храниться в кэше.
  2. Выполните следующую команду, чтобы просмотреть созданную базу данных:

    database_operations.get(resource_group_name = resource_group_name, cluster_name = cluster_name, database_name = database_name)
    

Теперь у вас есть кластер и база данных.

Очистка ресурсов

  • Если вы планируете следить за другими нашими статьями, сохраните созданные вами ресурсы.

  • Чтобы очистить ресурсы, удалите кластер. При удалении кластера также удаляются все содержащиеся в нем базы данных. Для удаления кластера используйте следующую команду:

    cluster_operations.delete(resource_group_name = resource_group_name, cluster_name = cluster_name)
    

Дальнейшие действия