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.ClustersClient
CreateOrUpdate 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.ClustersClient
ListByResourceGroup 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.ClustersClient
Delete 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:
Bir Azure Veri Gezgini kümesi oluşturulur.
Belirtilen kaynak grubundaki tüm Azure Veri Gezgini kümeleri listelenir.
Mevcut kümede bir Azure Veri Gezgini veritabanı oluşturulur.
Belirtilen kümedeki tüm veritabanları listelenir.
Veritabanı silinir.
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.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
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.
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.
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.