İngilizce dilinde oku

Aracılığıyla paylaş


Öğretici: Azure HDInsight'ta satış içgörüleri türetmek için uçtan uca veri işlem hattı oluşturma

Bu öğreticide ayıklama, dönüştürme ve yükleme (ETL) işlemleri gerçekleştiren uçtan uca bir veri işlem hattı oluşturacaksınız. İşlem hattı, verileri sorgulamak ve işlemek için Azure HDInsight üzerinde çalışan Apache Spark ve Apache Hive kümelerini kullanır. Ayrıca veri depolama için Azure Data Lake Storage 2. Nesil ve görselleştirme için Power BI gibi teknolojileri de kullanırsınız.

Bu veri işlem hattı çeşitli depolardan verileri birleştirir, istenmeyen verileri kaldırır, yeni veriler ekler ve iş içgörülerini görselleştirmek için verileri depolama alanınıza geri yükler. ETL işlem hatları hakkında daha fazla bilgi için bkz . Büyük ölçekte ayıklama, dönüştürme ve yükleme.

Ayıklama, dönüştürme ve yükleme mimarisini gösteren ekran görüntüsü.

Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.

Önkoşullar

Kaynak oluşturma

Bu bölümde kaynakların nasıl oluşturulacağı gösterilmektedir.

Depoyu betikler ve verilerle kopyalama

  1. Azure aboneliğinizde oturum açın. Azure Cloud Shell kullanmayı planlıyorsanız kod bloğunun sağ üst köşesindeki Deneyin'i seçin. Aksi takdirde, aşağıdaki komutu girin:

    az login
    
    # If you have multiple subscriptions, set the one to use
    # az account set --subscription "SUBSCRIPTIONID"
    
  2. Azure rol sahibi üyesi olduğunuzdan emin olun. değerini hesabınızla değiştirin user@contoso.com ve komutunu girin:

    az role assignment list \
    --assignee "user@contoso.com" \
    --role "Owner"
    

    Kayıt döndürülmezse, üye değilsinizdir ve bu öğreticiyi tamamlayamazsınız.

  3. HDInsight satış içgörüleri ETL deposundan bu öğreticinin verilerini ve betiklerini indirin. Aşağıdaki komutu girin:

    git clone https://github.com/Azure-Samples/hdinsight-sales-insights-etl.git
    cd hdinsight-sales-insights-etl
    
  4. Oluşturulduğuna salesdata scripts templates emin olun. Aşağıdaki komutla doğrulayın:

    ls
    

İşlem hattı için gereken Azure kaynaklarını dağıtma

  1. komutunu girerek tüm betikler için yürütme izinleri ekleyin:

    chmod +x scripts/*.sh
    
  2. Kaynak grubu için değişkenleri ayarlama. öğesini varolan veya yeni bir kaynak grubunun adıyla değiştirin RESOURCE_GROUP_NAME ve komutunu girin:

    RESOURCE_GROUP="RESOURCE_GROUP_NAME"
    
  3. Betiği çalıştırın. değerini istediğiniz değerle değiştirin LOCATION ve komutunu girin:

    ./scripts/resources.sh $RESOURCE_GROUP LOCATION
    

    Hangi bölgeyi belirteceğinizden emin değilseniz az account list-locations komutunu kullanarak aboneliğiniz için desteklenen bölgelerin listesini alın.

    komutu aşağıdaki kaynakları dağıtır:

    • bir Azure Blob Depolama hesabı. Bu hesap, şirket satış verilerini barındırıyor.
    • Data Lake Storage 2. Nesil hesabı. Bu hesap, her iki HDInsight kümesi için de depolama hesabı görevi görür. Data Lake Storage 2. Nesil ile Azure HDInsight tümleştirmesinde HDInsight ve Data Lake Storage 2. Nesil hakkında daha fazla bilgi edinin.
    • Kullanıcı tarafından atanan yönetilen kimlik. Bu hesap HDInsight kümelerine Data Lake Storage 2. Nesil hesabına erişim verir.
    • Apache Spark kümesi. Bu küme ham verileri temizlemek ve dönüştürmek için kullanılır.
    • Apache Hive Etkileşimli Sorgu kümesi. Satış verilerini sorgulamak ve Power BI ile görselleştirmek için bu kümeyi kullanabilirsiniz.
    • Ağ güvenlik grubu kuralları tarafından desteklenen bir Azure sanal ağı. Bu sanal ağ, kümelerin iletişim kurmasına olanak tanır ve iletişimlerinin güvenliğini sağlar.

Küme oluşturma işlemi yaklaşık 20 dakika sürebilir.

Kümelere Secure Shell (SSH) protokolü erişimi için varsayılan paroladır Thisisapassword1. Parolayı değiştirmek istiyorsanız, dosyaya ./templates/resourcesparameters_remainder.json gidin ve , sparkClusterLoginPassword, llapClusterLoginPasswordve llapsshPassword parametrelerinin sparksshPasswordparolasını değiştirin.

Dağıtımı doğrulama ve kaynak bilgilerini toplama

  1. Dağıtımınızın durumunu denetlemek istiyorsanız Azure portalında kaynak grubuna gidin. Ayarlar'ın altında Dağıtımlar'ı seçin. Ardından dağıtımınızı seçin. Burada başarıyla dağıtılan kaynakları ve devam eden kaynakları görebilirsiniz.

  2. Kümelerin adlarını görüntülemek için aşağıdaki komutu girin:

    SPARK_CLUSTER_NAME=$(cat resourcesoutputs_remainder.json | jq -r '.properties.outputs.sparkClusterName.value')
    LLAP_CLUSTER_NAME=$(cat resourcesoutputs_remainder.json | jq -r '.properties.outputs.llapClusterName.value')
    
    echo "Spark Cluster" $SPARK_CLUSTER_NAME
    echo "LLAP cluster" $LLAP_CLUSTER_NAME
    
  3. Azure depolama hesabını ve erişim anahtarını görüntülemek için aşağıdaki komutu girin:

    BLOB_STORAGE_NAME=$(cat resourcesoutputs_storage.json | jq -r '.properties.outputs.blobStorageName.value')
    
    blobKey=$(az storage account keys list \
        --account-name $BLOB_STORAGE_NAME \
        --resource-group $RESOURCE_GROUP \
        --query [0].value -o tsv)
    
    echo $BLOB_STORAGE_NAME
    echo $BLOB_KEY
    
  4. Data Lake Storage 2. Nesil hesabını ve erişim anahtarını görüntülemek için aşağıdaki komutu girin:

    ADLSGEN2STORAGENAME=$(cat resourcesoutputs_storage.json | jq -r '.properties.outputs.adlsGen2StorageName.value')
    
    ADLSKEY=$(az storage account keys list \
        --account-name $ADLSGEN2STORAGENAME \
        --resource-group $RESOURCE_GROUP \
        --query [0].value -o tsv)
    
    echo $ADLSGEN2STORAGENAME
    echo $ADLSKEY
    

Veri fabrikası oluşturma

Azure Data Factory, Azure Pipelines'ın otomatikleştirilmesine yardımcı olan bir araçtır. Bu görevleri yerine getirmenin tek yolu bu değildir, ancak işlemleri otomatikleştirmenin harika bir yoludur. Data Factory hakkında daha fazla bilgi için Data Factory belgelerine bakın.

Bu veri fabrikasında iki etkinliği olan bir işlem hattı vardır:

  • İlk etkinlik, veri alımını taklit etmek için verileri Blob Depolama'dan Data Lake Storage 2. Nesil depolama hesabına kopyalar.
  • İkinci etkinlik Spark kümesindeki verileri dönüştürür. Betik, istenmeyen sütunları kaldırarak verileri dönüştürür. Ayrıca, tek bir işlemin oluşturduğu geliri hesaplayan yeni bir sütun ekler.

Data Factory işlem hattınızı ayarlamak için aşağıdaki komutu çalıştırın. Dizinde hdinsight-sales-insights-etl olmanız gerekir.

BLOB_STORAGE_NAME=$(cat resourcesoutputs_storage.json | jq -r '.properties.outputs.blobStorageName.value')
ADLSGEN2STORAGENAME=$(cat resourcesoutputs_storage.json | jq -r '.properties.outputs.adlsGen2StorageName.value')

./scripts/adf.sh $RESOURCE_GROUP $ADLSGEN2STORAGENAME $BLOB_STORAGE_NAME

Bu betik aşağıdaki eylemleri gerçekleştirir:

  1. Data Lake Storage 2. Nesil depolama hesabında izinleri olan Storage Blob Data Contributor bir hizmet sorumlusu oluşturur.
  2. Data Lake Storage 2. Nesil dosya sistemi REST API'sine yönelik istekleri yetkilendirmek POST için bir kimlik doğrulama belirteci alır.
  3. ve query.hql dosyalarında Data Lake Storage 2. Nesil depolama hesabınızın sparktransform.py gerçek adını doldurur.
  4. Data Lake Storage 2. Nesil ve Blob Depolama hesapları için depolama anahtarlarını alır.
  5. İlişkili bağlı hizmetleri ve etkinlikleriyle bir Data Factory işlem hattı oluşturmak için başka bir kaynak dağıtımı oluşturur. Bağlı hizmetlerin depolama hesaplarına doğru şekilde erişebilmesi için depolama anahtarlarını şablon dosyasına parametre olarak geçirir.

Veri işlem hattını çalıştırma

Bu bölümde veri işlem hattının nasıl çalıştırılacakları gösterilmektedir.

Data Factory etkinliklerini tetikleme

Oluşturduğunuz Data Factory işlem hattındaki ilk etkinlik, verileri Blob Depolama'dan Data Lake Storage 2. Nesil taşır. İkinci etkinlik, Spark dönüşümlerini verilere uygular ve dönüştürülen .csv dosyalarını yeni bir konuma kaydeder. İşlem hattının tamamının tamamlanması birkaç dakika sürebilir.

Data Factory adını almak için aşağıdaki komutu girin:

cat resourcesoutputs_adf.json | jq -r '.properties.outputs.factoryName.value'

İşlem hattını tetiklemeniz için iki seçeneğiniz vardır. Şunları yapabilirsiniz:

  • PowerShell'de Data Factory işlem hattını tetikleme. ve DataFactoryName değerlerini uygun değerlerle değiştirin RESOURCEGROUP ve aşağıdaki komutları çalıştırın:

    # If you have multiple subscriptions, set the one to use
    # Select-AzSubscription -SubscriptionId "<SUBSCRIPTIONID>"
    
    $resourceGroup="RESOURCEGROUP"
    $dataFactory="DataFactoryName"
    
    $pipeline =Invoke-AzDataFactoryV2Pipeline `
        -ResourceGroupName $resourceGroup `
        -DataFactory $dataFactory `
        -PipelineName "IngestAndTransform"
    
    Get-AzDataFactoryV2PipelineRun `
        -ResourceGroupName $resourceGroup  `
        -DataFactoryName $dataFactory `
        -PipelineRunId $pipeline
    

    İlerleme durumunu izlemek için gerektiğinde yeniden yürütebilirsiniz Get-AzDataFactoryV2PipelineRun .

    İsterseniz:

  • Veri fabrikasını açın ve Yazar ve İzleyici'yi seçin. Portaldan IngestAndTransform işlem hattını tetikleme. Portal aracılığıyla işlem hatlarını tetikleme hakkında bilgi için bkz . Azure Data Factory kullanarak HDInsight'ta isteğe bağlı Apache Hadoop kümeleri oluşturma.

İşlem hattının çalıştığını doğrulamak için aşağıdaki adımlardan birini uygulayın:

  • Portal aracılığıyla veri fabrikanızdaki İzleyici bölümüne gidin.
  • Azure Depolama Gezgini'da Data Lake Storage 2. Nesil depolama hesabınıza gidin. files Dosya sistemine gidin ve ardından klasöre transformed gidin. İşlem hattının başarılı olup olmadığını görmek için klasör içeriğini denetleyin.

HDInsight kullanarak verileri dönüştürmenin diğer yolları için Jupyter Not Defteri'ni kullanma hakkındaki bu makaleye bakın.

Power BI'da verileri görüntülemek için Etkileşimli Sorgu kümesinde tablo oluşturma

  1. query.hql Güvenli kopyalama (SCP) komutunu kullanarak dosyayı LLAP kümesine kopyalayın. Komutunu girin:

    LLAP_CLUSTER_NAME=$(cat resourcesoutputs_remainder.json | jq -r '.properties.outputs.llapClusterName.value')
    scp scripts/query.hql sshuser@$LLAP_CLUSTER_NAME-ssh.azurehdinsight.net:/home/sshuser/
    

    Anımsatıcı: Varsayılan paroladır Thisisapassword1.

  2. LLAP kümesine erişmek için SSH kullanın. Aşağıdaki komutu girin:

    ssh sshuser@$LLAP_CLUSTER_NAME-ssh.azurehdinsight.net
    
  3. Betiği çalıştırmak için aşağıdaki komutu kullanın:

    beeline -u 'jdbc:hive2://localhost:10001/;transportMode=http' -f query.hql
    

    Bu betik, Power BI'dan erişebileceğiniz Etkileşimli Sorgu kümesinde yönetilen bir tablo oluşturur.

Satış verilerinden Power BI panosu oluşturma

  1. Power BI Desktop açın.

  2. Menüde Daha fazla veri>al... seçeneğine gidin.>Azure>HDInsight Etkileşimli Sorgusu.

  3. Bağlan'ı seçin.

  4. HDInsight Etkileşimli Sorgu iletişim kutusunda:

    1. Sunucu metin kutusuna LLAP kümenizin adını biçiminde https://LLAPCLUSTERNAME.azurehdinsight.netgirin.
    2. Veritabanı metin kutusuna varsayılan değerini girin.
    3. Tamam'ı seçin.
  5. AzureHive iletişim kutusunda:

    1. Kullanıcı adı metin kutusuna admin yazın.
    2. Parola metin kutusuna Thisisapassword1 yazın.
    3. Bağlan'ı seçin.
  6. Gezgin'de satış veya sales_raw seçerek verilerin önizlemesini görüntüleyin. Veriler yüklendikten sonra, oluşturmak istediğiniz panoyla denemeler yapabilirsiniz. Power BI panolarını kullanmaya başlamak için aşağıdaki makalelere bakın:

Kaynakları temizleme

Bu uygulamayı kullanmaya devam etmeyecekseniz, ücretlendirilmemesi için tüm kaynakları silin.

  1. Kaynak grubunu kaldırmak için komutunu girin:

    az group delete -n $RESOURCE_GROUP
    
  2. Hizmet sorumlusunu kaldırmak için şu komutları girin:

    SERVICE_PRINCIPAL=$(cat serviceprincipal.json | jq -r '.name')
    az ad sp delete --id $SERVICE_PRINCIPAL
    

Sonraki adım