Creación de un clúster y una base de datos de Azure Data Explorer mediante Python

En este artículo, va a crear un clúster y una base de datos de Azure Data Explorer mediante Python. Azure Data Explorer es un servicio de análisis de datos rápido y totalmente administrado para analizar en tiempo real grandes volúmenes de datos de que se transmiten desde aplicaciones, sitios web, dispositivos IoT, etc. Para usar Azure Data Explorer, cree primero un clúster y una o varias bases de datos en él. A continuación, ingiera, o cargue, los datos en una base de datos para que pueda ejecutar consultas en ella.

Prerequisites

Instalación del paquete de Python

Para instalar el paquete de Python correspondiente a Azure Data Explorer (Kusto), abra un símbolo del sistema que tenga Python en su ruta de acceso. Ejecute este comando:

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

Authentication

Para ejecutar los ejemplos de este artículo, se necesita una aplicación de Azure AD y una entidad de servicio con acceso a los recursos. Consulte Creación de una aplicación de Azure AD para crear una aplicación de Azure AD gratuita e incorporar una asignación de roles en el ámbito de la suscripción. También se explica cómo obtener Directory (tenant) ID, Application ID y Client Secret.

Creación del clúster de Azure Data Explorer

  1. Cree el clúster mediante el siguiente comando:

    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()
    
    Configuración Valor sugerido Descripción del campo
    cluster_name mykustocluster Nombre que quiere para el clúster.
    sku_name Standard_D13_v2 La SKU que se usará para el clúster.
    Nivel: Estándar Nivel de SKU.
    capacity número Número de instancias del clúster.
    resource_group_name testrg Nombre del grupo de recursos en el que se creará el clúster.

    Nota

    La creación de un clúster es una operación de larga duración. El método create_or_update devuelve una instancia de LROPoller. Consulte la clase LROPoller para más información.

  2. Ejecute el siguiente comando para comprobar si el clúster se creó correctamente:

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

Si el resultado contiene provisioningState con el valor Succeeded, significa que el clúster se ha creado correctamente.

Creación de la base de datos en el clúster de Azure Data Explorer

  1. Cree la base de datos con el siguiente comando:

    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()
    

    Nota

    Si utiliza la versión 0.4.0 de Python, o cualquier versión inferior, use Database en lugar de ReadWriteDatabase.

    Configuración Valor sugerido Descripción del campo
    cluster_name mykustocluster Nombre del clúster donde se creará la base de datos.
    database_name mykustodatabase Nombre de la base de datos.
    resource_group_name testrg Nombre del grupo de recursos en el que se creará el clúster.
    soft_delete_period 3650 days, 0:00:00 Cantidad de tiempo que los datos estarán disponibles para consulta.
    hot_cache_period 3650 days, 0:00:00 Cantidad de tiempo que los datos se conservarán en la caché.
  2. Ejecute el siguiente comando para ver la base de datos que ha creado:

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

Ahora cuenta con un clúster y una base de datos.

Limpieza de recursos

  • Si tiene previsto seguir nuestros otros artículos, conserve los recursos que creó.

  • Para limpiar los recursos, elimine el clúster. Cuando se elimina un clúster, también se eliminan todas las bases de datos en él. Use el siguiente comando para eliminar el clúster:

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

Pasos siguientes