Go kullanarak Azure Veri Gezgini kümesi ve veritabanı oluşturma

Azure Veri Gezgini uygulamalar, web siteleri, IoT cihazları ve daha fazlasından akışı yapılan büyük miktarda veri üzerinde gerçek zamanlı analiz yapmaya yönelik hızlı ve tam olarak yönetilen bir veri analizi hizmetidir. Azure Veri Gezgini'ni kullanmak için öncelikle bir küme ve bu kümenin içinde bir veya daha fazla veritabanı oluşturmanız gerekir. Ardından veritabanına veri alarak (yükleyerek) sorgu çalıştırabilirsiniz.

Bu makalede Go kullanarak bir Azure Veri Gezgini kümesi ve veritabanı oluşturacaksınız. Ardından yeni kümenizi ve veritabanınızı listeleyip silebilir ve kaynaklarınızdaki işlemleri yürütebilirsiniz.

Önkoşullar

  • Azure aboneliği. Ücretsiz bir Azure hesabı oluşturun.
  • Git'i yükleyin.
  • Uygun bir Go sürümünü yükleyin. Desteklenen sürümler hakkında daha fazla bilgi için bkz. Azure Go SDK'sı.

Kodu gözden geçirin

Bu bölüm isteğe bağlıdır. Kodun nasıl çalıştığını öğrenmek istiyorsanız aşağıdaki kod parçacıklarını gözden geçirebilirsiniz. Aksi takdirde, Uygulamayı çalıştırma bölümüne atlayabilirsiniz.

Kimlik Doğrulaması

Programın herhangi bir işlemi yürütmeden önce Azure Veri Gezgini kimlik doğrulaması yapması gerekir. İstemci kimlik bilgileri kimlik doğrulama türükimlik doğrulaması tarafından kullanılır. Aşağıdaki önceden tanımlanmış ortam değişkenlerini arayabilen NewAuthorizerFromEnvironment: AZURE_CLIENT_ID, AZURE_CLIENT_SECRET, AZURE_TENANT_ID.

Aşağıdaki örnekte kustonun nasıl olduğu gösterilmektedir . ClustersClient şu teknik kullanılarak oluşturulur:

func getClustersClient(subscription string) kusto.ClustersClient {
	client := kusto.NewClustersClient(subscription)
	authR, err := auth.NewAuthorizerFromEnvironment()
	if err != nil {
		log.Fatal(err)
	}
	client.Authorizer = authR

	return client
}

İpucu

Kimlik doğrulamasını kullanın. Azure CLI'yi yüklediyseniz ve kimlik doğrulaması için yapılandırdıysanız yerel geliştirme için NewAuthorizerFromCLIWithResource işlevi.

Küme oluşturma

Yeni bir Azure Veri Gezgini kümesi oluşturmak için üzerinde kusto.ClustersClientCreateOrUpdate işlevini kullanın. Sonuçları incelemeden önce işlemin tamamlanmasını bekleyin.

func createCluster(sub, name, location, rgName string) {
    ...
	result, err := client.CreateOrUpdate(ctx, rgName, name, kusto.Cluster{Location: &location, Sku: &kusto.AzureSku{Name: kusto.DevNoSLAStandardD11V2, Capacity: &numInstances, Tier: kusto.Basic}})
    ...
    err = result.WaitForCompletionRef(context.Background(), client.Client)
    ...
    r, err := result.Result(client)
}

Kümeleri listeleme

Kusto almak için üzerindeki kusto.ClustersClientListByResourceGroup işlevini kullanın. Daha sonra çıktıyı tablo biçiminde göstermek için yinelenmiş ClusterListResult.

func listClusters(sub, rgName string) {
    ...
	result, err := getClustersClient(sub).ListByResourceGroup(ctx, rgName)
    ...
    for _, c := range *result.Value {
		// setup tabular representation
	}
    ...
}

Veritabanı oluşturma

Kusto üzerinde CreateOrUpdate işlevini kullanın. DatabasesClient, mevcut bir kümede yeni bir Azure Veri Gezgini veritabanı oluşturur. Sonuçları incelemeden önce işlemin tamamlanmasını bekleyin.

func createDatabase(sub, rgName, clusterName, location, dbName string) {
	future, err := client.CreateOrUpdate(ctx, rgName, clusterName, dbName, kusto.ReadWriteDatabase{Kind: kusto.KindReadWrite, Location: &location})
    ...
    err = future.WaitForCompletionRef(context.Background(), client.Client)
    ...
    r, err := future.Result(client)
    ...
}

Veritabanlarını listeleme

Kusto'ya ulaşmak için ListByCluster işlevini kullanın kusto.DatabasesClient. Daha sonra çıktıyı tablo biçiminde göstermek için yinelenmiş olan DatabaseListResult.

func listDatabases(sub, rgName, clusterName string) {
	result, err := getDBClient(sub).ListByCluster(ctx, rgName, clusterName)
    ...
	for _, db := range *result.Value {
		// setup tabular representation
    }
    ...
}

Veritabanını silme

Bir kümedeki kusto.DatabasesClient mevcut veritabanını silmek için üzerindeki Delete işlevini kullanın. Sonuçları incelemeden önce işlemin tamamlanmasını bekleyin.

func deleteDatabase(sub, rgName, clusterName, dbName string) {
	...
    future, err := getDBClient(sub).Delete(ctx, rgName, clusterName, dbName)
    ...
    err = future.WaitForCompletionRef(context.Background(), client.Client)
    ...
    r, err := future.Result(client)
    if r.StatusCode == 200 {
        // determine success or failure
    }
    ...
}

Kümeyi silme

Kümeyi silmek için üzerindeki kusto.ClustersClientDelete işlevini kullanın. Sonuçları incelemeden önce işlemin tamamlanmasını bekleyin.

func deleteCluster(sub, clusterName, rgName string) {
	result, err := client.Delete(ctx, rgName, clusterName)
    ...
	err = result.WaitForCompletionRef(context.Background(), client.Client)
    ...
	r, err := result.Result(client)
    if r.StatusCode == 200 {
        // determine success or failure
    }
    ...
}

Uygulamayı çalıştırma

Örnek kodu olduğu gibi çalıştırdığınızda aşağıdaki eylemler gerçekleştirilir:

  1. Bir Azure Veri Gezgini kümesi oluşturulur.

  2. Belirtilen kaynak grubundaki tüm Azure Veri Gezgini kümeleri listelenir.

  3. Mevcut kümede bir Azure Veri Gezgini veritabanı oluşturulur.

  4. Belirtilen kümedeki tüm veritabanları listelenir.

  5. Veritabanı silinir.

  6. Küme silinir.

    func main() {
        createCluster(subscription, clusterNamePrefix+clusterName, location, rgName)
        listClusters(subscription, rgName)
        createDatabase(subscription, rgName, clusterNamePrefix+clusterName, location, dbNamePrefix+databaseName)
        listDatabases(subscription, rgName, clusterNamePrefix+clusterName)
        deleteDatabase(subscription, rgName, clusterNamePrefix+clusterName, dbNamePrefix+databaseName)
        deleteCluster(subscription, clusterNamePrefix+clusterName, rgName)
    }
    

    İpucu

    Farklı işlem birleşimlerini denemek için, içinde ilgili işlevleri main.go gerektiği gibi açıklama satırı yapabilir ve bunlara açıklama ekleyebilirsiniz.

  7. GitHub'dan örnek kodu kopyalayın:

    git clone https://github.com/Azure-Samples/azure-data-explorer-go-cluster-management.git
    cd azure-data-explorer-go-cluster-management
    
  8. Program, istemci kimlik bilgilerini kullanarak kimlik doğrulaması yapar. Hizmet sorumlusu oluşturmak için Azure CLI az ad sp create-for-rbac komutunu kullanın. sonraki adımda kullanmak üzere istemci kimliğini, gizli anahtarı ve kiracı kimliği bilgilerini kaydedin.

  9. Hizmet sorumlusu bilgileri de dahil olmak üzere gerekli ortam değişkenlerini dışarı aktarın. Kümeyi oluşturmak istediğiniz abonelik kimliğinizi, kaynak grubunuzu ve bölgenizi girin.

    export AZURE_CLIENT_ID="<enter service principal client ID>"
    export AZURE_CLIENT_SECRET="<enter service principal client secret>"
    export AZURE_TENANT_ID="<enter tenant ID>"
    
    export SUBSCRIPTION="<enter subscription ID>"
    export RESOURCE_GROUP="<enter resource group name>"
    export LOCATION="<enter azure location e.g. Southeast Asia>"
    
    export CLUSTER_NAME_PREFIX="<enter prefix (cluster name will be [prefix]-ADXTestCluster)>"
    export DATABASE_NAME_PREFIX="<enter prefix (database name will be [prefix]-ADXTestDB)>"
    

    İpucu

    Uygulamanıza kimlik bilgileri sağlamak için üretim senaryolarında ortam değişkenlerini kullanmanız olasıdır. Kodu gözden geçirme bölümünde belirtildiği gibi, yerel geliştirme için kimlik doğrulamasını kullanın. Azure CLI'yi yüklediyseniz ve kimlik doğrulaması için yapılandırdıysanız NewAuthorizerFromCLIWithResource. Bu durumda hizmet sorumlusu oluşturmanız gerekmez.

  10. Programı çalıştırın:

    go run main.go
    

    Aşağıdakine benzer bir çıkış alırsınız:

    waiting for cluster creation to complete - fooADXTestCluster
    created cluster fooADXTestCluster
    listing clusters in resource group <your resource group>
    +-------------------+---------+----------------+-----------+-----------------------------------------------------------+
    |       NAME        |  STATE  |    LOCATION    | INSTANCES |                            URI                           |
    +-------------------+---------+----------------+-----------+-----------------------------------------------------------+
    | fooADXTestCluster | Running | Southeast Asia |         1 | https://fooADXTestCluster.southeastasia.kusto.windows.net |
    +-------------------+---------+----------------+-----------+-----------------------------------------------------------+
    
    waiting for database creation to complete - barADXTestDB
    created DB fooADXTestCluster/barADXTestDB with ID /subscriptions/<your subscription ID>/resourceGroups/<your resource group>/providers/Microsoft.Kusto/Clusters/fooADXTestCluster/Databases/barADXTestDB and type Microsoft.Kusto/Clusters/Databases
    
    listing databases in cluster fooADXTestCluster
    +--------------------------------+-----------+----------------+------------------------------------+
    |              NAME              |   STATE   |    LOCATION    |                TYPE                |
    +--------------------------------+-----------+----------------+------------------------------------+
    | fooADXTestCluster/barADXTestDB | Succeeded | Southeast Asia | Microsoft.Kusto/Clusters/Databases |
    +--------------------------------+-----------+----------------+------------------------------------+
    
    waiting for database deletion to complete - barADXTestDB
    deleted DB barADXTestDB from cluster fooADXTestCluster
    
    waiting for cluster deletion to complete - fooADXTestCluster
    deleted Azure Data Explorer cluster fooADXTestCluster from resource group <your resource group>
    

Kaynakları temizleme

Bu makaledeki örnek kodu kullanarak kümeyi program aracılığıyla silmediyseniz , Azure CLI kullanarak bunları el ile silin.

Sonraki adımlar

Azure Veri Gezgini Go SDK'sını kullanarak veri alma