Mentransformasi data di Azure Virtual Network menggunakan aktivitas Apache Hive di Azure Data Factory
BERLAKU UNTUK: Azure Data Factory
Azure Synapse Analytics
Tip
Cobalah Data Factory di Microsoft Fabric, solusi analitik all-in-one untuk perusahaan. Microsoft Fabric mencakup semuanya mulai dari pergerakan data hingga ilmu data, analitik real time, kecerdasan bisnis, dan pelaporan. Pelajari cara memulai uji coba baru secara gratis!
Dalam tutorial ini, Anda menggunakan Azure PowerShell untuk membuat alur Azure Data Factory yang mengubah data menggunakan Aktivitas Apache Hive pada kluster Azure HDInsight yang berada di Azure Virtual Network (VNet). Anda akan melakukan langkah-langkah berikut dalam tutorial ini:
- Membuat pabrik data.
- Menulis dan menyiapkan waktu runtime integrasi yang dihosting sendiri
- Menulis dan menyebarkan layanan tertaut.
- Tulis dan sebarkan alur yang berisi aktivitas Apache Hive.
- Memulai eksekusi alur.
- Memantau eksekusi alur
- verifikasi output.
Jika Anda tidak memiliki langganan Azure, buat akun gratis sebelum Anda memulai.
Prasyarat
Catatan
Sebaiknya Anda menggunakan modul Azure Az PowerShell untuk berinteraksi dengan Azure. Untuk memulai, lihat Menginstal Azure PowerShell. Untuk mempelajari cara bermigrasi ke modul Az PowerShell, lihat Memigrasikan Azure PowerShell dari AzureRM ke Az.
Akun Azure Storage. Anda membuat skrip Apache Hive, dan mengunggahnya ke penyimpanan Azure. Output dari skrip Apache Hive disimpan di akun penyimpanan ini. Dalam sampel ini, kluster Microsoft Azure HDInsight menggunakan akun Microsoft Azure Storage ini sebagai penyimpanan utama.
Azure Jaringan Virtual. Jika Anda tidak memiliki jaringan virtual Azure, buat dengan mengikuti instruksi ini. Dalam sampel ini, Microsoft Azure HDInsight berada dalam Microsoft Azure Virtual Network Azure. Berikut adalah sampel konfigurasi Microsoft Azure Virtual Network.
Kluster HDInsight. Buat kluster Microsoft Azure HDInsight dan gabungkan ke jaringan virtual yang Anda buat di langkah sebelumnya dengan mengikuti artikel ini: Memperluas Azure Microsoft Azure HDInsight menggunakan Microsoft Azure Virtual Network. Berikut adalah sampel konfigurasi Microsoft Azure HDInsight dalam jaringan virtual.
Azure PowerShell. Ikuti instruksi di Cara menginstal dan mengonfigurasi Azure PowerShell.
Unggah skrip Apache Hive ke akun Azure Blob Storage Anda
Buat file Apache Hive SQL bernama hivescript.hql dengan konten berikut:
DROP TABLE IF EXISTS HiveSampleOut; CREATE EXTERNAL TABLE HiveSampleOut (clientid string, market string, devicemodel string, state string) ROW FORMAT DELIMITED FIELDS TERMINATED BY ' ' STORED AS TEXTFILE LOCATION '${hiveconf:Output}'; INSERT OVERWRITE TABLE HiveSampleOut Select clientid, market, devicemodel, state FROM hivesampletable
Di Azure Blob Storage Anda, buat kontainer bernama adftutorial jika tidak ada.
Buat folder bernama hivescripts.
Unggah file hivescript.hql ke subfolder hivescripts.
Membuat pabrik data
Menyediakan nama grup sumber daya Anda membuat grup sumber daya sebagai bagian dari tutorial ini. Namun, Anda dapat menggunakan grup sumber daya yang ada jika mau.
$resourceGroupName = "ADFTutorialResourceGroup"
Tentukan nama pabrik data. Harus unik secara global.
$dataFactoryName = "MyDataFactory09142017"
Tentukan nama untuk alur.
$pipelineName = "MyHivePipeline" #
Tentukan nama untuk runtime integrasi yang dihosting sendiri. Anda memerlukan runtime integrasi yang dihosting sendiri saat Data Factory perlu mengakses sumber daya (seperti Azure SQL Database) di dalam VNet.
$selfHostedIntegrationRuntimeName = "MySelfHostedIR09142017"
Luncurkan PowerShell. Biarkan Azure PowerShell terbuka hingga akhir panduan mulai cepat ini. Jika Anda menutup dan membuka kembali, Anda perlu menjalankan perintah lagi. Untuk daftar wilayah Azure tempat Data Factory saat ini tersedia, pilih wilayah yang menarik minat Anda pada halaman berikut, lalu perluas Analitik untuk menemukan Data Factory: Produk yang tersedia menurut wilayah. Penyimpanan data (Azure Storage, Azure SQL Database, dll.) dan komputasi (HDInsight, dll.) yang digunakan oleh pabrik data dapat berada di wilayah lain.
Jalankan perintah berikut dan masukkan nama pengguna serta kata sandi yang Anda gunakan untuk masuk ke portal Microsoft Azure:
Connect-AzAccount
Jalankan perintah berikut untuk menampilkan semua langganan untuk akun ini:
Get-AzSubscription
Jalankan perintah berikut untuk memilih langganan yang ingin Anda gunakan. Ganti SubscriptionId dengan ID langganan Azure Anda:
Select-AzSubscription -SubscriptionId "<SubscriptionId>"
Buat grup sumber daya: ADFTutorialResourceGroup jika belum ada di langganan Anda.
New-AzResourceGroup -Name $resourceGroupName -Location "East Us"
Buat pabrik data.
$df = Set-AzDataFactoryV2 -Location EastUS -Name $dataFactoryName -ResourceGroupName $resourceGroupName
Jalankan perintah berikut untuk melihat output:
$df
Membuat runtime integrasi yang dihost sendiri
Di bagian ini, Anda membuat runtime integrasi yang dihosting sendiri dan mengaitkannya dengan komputer virtual Azure di Azure Virtual Network yang sama di tempat kluster HDInsight Anda berada.
Buat Runtime integrasi yang dihosting sendiri Gunakan nama unik jika ada runtime integrasi lain dengan nama yang sama.
Set-AzDataFactoryV2IntegrationRuntime -ResourceGroupName $resourceGroupName -DataFactoryName $dataFactoryName -Name $selfHostedIntegrationRuntimeName -Type SelfHosted
Perintah ini membuat pendaftaran logis dari runtime integrasi yang dihosting sendiri.
Gunakan PowerShell untuk mengambil kunci autentikasi untuk mendaftarkan runtime integrasi yang dihosting sendiri. Salin salah satu kunci untuk mendaftarkan runtime integrasi yang dihosting sendiri.
Get-AzDataFactoryV2IntegrationRuntimeKey -ResourceGroupName $resourceGroupName -DataFactoryName $dataFactoryName -Name $selfHostedIntegrationRuntimeName | ConvertTo-Json
Berikut adalah output sampel:
{ "AuthKey1": "IR@0000000000000000000000000000000000000=", "AuthKey2": "IR@0000000000000000000000000000000000000=" }
Catat nilai AuthKey1 tanpa tanda kutip.
Buat komputer virtual Azure dan gabungkan ke jaringan virtual yang sama yang berisi kluster Microsoft Azure HDInsight Anda. Untuk detailnya, lihat Cara membuat mesin virtual. Gabungkan ke dalam Azure Virtual Network.
Di komputer virtual Azure, unduh runtime integrasi yang dihosting sendiri. Gunakan Kunci Autentikasi yang diperoleh di langkah sebelumnya untuk mendaftarkan runtime integrasi yang dihosting sendiri secara manual.
Anda melihat pesan berikut saat runtime integrasi yang dihost sendiri berhasil didaftarkan:
Anda melihat halaman berikut saat simpul tersambung ke layanan awan:
Layanan tertaut penulis
Anda menulis dan menyebarkan dua Layanan Tertaut di bagian ini:
- Layanan tertaut Azure Storage yang menautkan akun penyimpanan Azure Anda ke pabrik data. Penyimpanan ini adalah penyimpanan utama yang digunakan oleh kluster Microsoft Azure HDInsight Anda. Dalam hal ini, kita juga menggunakan akun Microsoft Azure Storage ini untuk menyimpan skrip Apache Hive dan output skrip.
- Layanan Tertaut Microsoft Azure HDInsight. Azure Data Factory mengirimkan skrip Hive ke kluster HDInsight ini untuk dieksekusi.
Layanan tertaut Microsoft Azure Storage
Buat file JSON menggunakan editor pilihan Anda, salin definisi JSON berikut dari layanan tertaut Microsoft Azure Storage, lalu simpan file sebagai MyStorageLinkedService.json.
{
"name": "MyStorageLinkedService",
"properties": {
"type": "AzureStorage",
"typeProperties": {
"connectionString": "DefaultEndpointsProtocol=https;AccountName=<storageAccountName>;AccountKey=<storageAccountKey>"
},
"connectVia": {
"referenceName": "MySelfhostedIR",
"type": "IntegrationRuntimeReference"
}
}
}
Ganti < accountname > dan <accountkey> dengan nama dan kunci akun Microsoft Azure Storage Anda.
Layanan tertaut Microsoft Azure HDInsight
Buat file JSON menggunakan editor pilihan Anda, salin definisi JSON berikut dari layanan tertaut Microsoft Azure HDInsight, lalu simpan file sebagai MyHDInsightLinkedService.json.
{
"name": "MyHDInsightLinkedService",
"properties": {
"type": "HDInsight",
"typeProperties": {
"clusterUri": "https://<clustername>.azurehdinsight.net",
"userName": "<username>",
"password": {
"value": "<password>",
"type": "SecureString"
},
"linkedServiceName": {
"referenceName": "MyStorageLinkedService",
"type": "LinkedServiceReference"
}
},
"connectVia": {
"referenceName": "MySelfhostedIR",
"type": "IntegrationRuntimeReference"
}
}
}
Perbarui nilai untuk properti berikut ini dalam definisi layanan tertaut:
userName. Nama pengguna masuk kluster yang Anda tentukan saat membuat kluster.
password. Kata sandi untuk pengguna.
clusterUri. Tentukan URL kluster Microsoft Azure HDInsight Anda dalam format berikut:
https://<clustername>.azurehdinsight.net
. Artikel ini mengasumsikan Anda memiliki akses ke kluster melalui internet. Misalnya, Anda dapat terhubung ke kluster dihttps://clustername.azurehdinsight.net
. Alamat ini menggunakan gateway publik, yang tidak tersedia jika Anda telah menggunakan kelompok keamanan jaringan (NSG) atau rute yang ditentukan pengguna (UDR) untuk membatasi akses dari internet. Agar Data Factory mengirimkan pekerjaan ke kluster Microsoft Azure HDInsight di Azure Virtual Network, Azure Virtual Network Anda perlu dikonfigurasi sedemikian rupa agar URL dapat diselesaikan ke alamat IP privat gateway yang digunakan oleh Microsoft Azure HDInsight.Dari portal Microsoft Azure, buka Microsoft Azure Virtual Network tempat Microsoft Azure HDInsight masuk. Buka antarmuka jaringan dengan nama yang dimulai dengan
nic-gateway-0
. Catat alamat IP privat. Misalnya: 10.6.0.15.Jika Azure Virtual Network Anda memiliki server DNS, perbarui catatan DNS agar URL kluster Microsoft Azure HDInsight
https://<clustername>.azurehdinsight.net
dapat diatasi ke10.6.0.15
. Ini adalah pendekatan yang direkomendasikan. Jika tidak memiliki server DNS di Azure Virtual Network, Anda dapat bekerja sementara dengan mengedit file host ini (C:\Windows\System32\drivers\etc) dari semua komputer virtual yang terdaftar sebagai simpul runtime integrasi yang dihosting sendiri dengan menambahkan entri seperti ini:10.6.0.15 myHDIClusterName.azurehdinsight.net
Membuat layanan tertaut
Di PowerShell, alihkan ke folder tempat Anda membuat file JSON, dan jalankan perintah berikut untuk menyebarkan layanan tertaut:
Di PowerShell, alihkan ke folder tempat Anda membuat file JSON.
Jalankan perintah berikut untuk membuat layanan tertaut Microsoft Azure Storage.
Set-AzDataFactoryV2LinkedService -DataFactoryName $dataFactoryName -ResourceGroupName $resourceGroupName -Name "MyStorageLinkedService" -File "MyStorageLinkedService.json"
Jalankan perintah berikut untuk membuat layanan tertaut Microsoft Azure HDInsight.
Set-AzDataFactoryV2LinkedService -DataFactoryName $dataFactoryName -ResourceGroupName $resourceGroupName -Name "MyHDInsightLinkedService" -File "MyHDInsightLinkedService.json"
Menulis alur
Dalam langkah ini, Anda membuat alur baru dengan aktivitas Apache Hive. Aktivitas ini menjalankan skrip Apache Hive untuk mengembalikan data dari tabel sampel dan menyimpannya ke jalur yang Anda tentukan. Buat file JSON di editor pilihan Anda, salin definisi JSON berikut dari definisi alur, dan simpan sebagai MyHivePipeline.json.
{
"name": "MyHivePipeline",
"properties": {
"activities": [
{
"name": "MyHiveActivity",
"type": "HDInsightHive",
"linkedServiceName": {
"referenceName": "MyHDILinkedService",
"type": "LinkedServiceReference"
},
"typeProperties": {
"scriptPath": "adftutorial\\hivescripts\\hivescript.hql",
"getDebugInfo": "Failure",
"defines": {
"Output": "wasb://<Container>@<StorageAccount>.blob.core.windows.net/outputfolder/"
},
"scriptLinkedService": {
"referenceName": "MyStorageLinkedService",
"type": "LinkedServiceReference"
}
}
}
]
}
}
Perhatikan poin berikut:
- scriptPath menunjuk ke jalur ke skrip Apache Hive di Akun Microsoft Azure Storage yang Anda gunakan untuk MyStorageLinkedService. Jalur tersebut peka huruf besar/kecil.
- Output adalah argumen yang digunakan dalam Apache Hive. Gunakan format
wasb://<Container>@<StorageAccount>.blob.core.windows.net/outputfolder/
untuk mengarahkannya ke folder yang sudah ada di Microsoft Azure Storage Anda. Jalur tersebut peka huruf besar/kecil.
Alihkan ke folder tempat Anda membuat file JSON, dan jalankan perintah berikut untuk menyebarkan alur:
Set-AzDataFactoryV2Pipeline -DataFactoryName $dataFactoryName -ResourceGroupName $resourceGroupName -Name $pipelineName -File "MyHivePipeline.json"
Memulai alur
Memulai eksekusi alur. Ini juga menangkap ID eksekusi alur untuk pemantauan di masa depan.
$runId = Invoke-AzDataFactoryV2Pipeline -DataFactoryName $dataFactoryName -ResourceGroupName $resourceGroupName -PipelineName $pipelineName
Jalankan skrip berikut ini untuk terus memeriksa status eksekusi alur hingga selesai.
while ($True) { $result = Get-AzDataFactoryV2ActivityRun -DataFactoryName $dataFactoryName -ResourceGroupName $resourceGroupName -PipelineRunId $runId -RunStartedAfter (Get-Date).AddMinutes(-30) -RunStartedBefore (Get-Date).AddMinutes(30) if(!$result) { Write-Host "Waiting for pipeline to start..." -foregroundcolor "Yellow" } elseif (($result | Where-Object { $_.Status -eq "InProgress" } | Measure-Object).count -ne 0) { Write-Host "Pipeline run status: In Progress" -foregroundcolor "Yellow" } else { Write-Host "Pipeline '"$pipelineName"' run finished. Result:" -foregroundcolor "Yellow" $result break } ($result | Format-List | Out-String) Start-Sleep -Seconds 15 } Write-Host "Activity `Output` section:" -foregroundcolor "Yellow" $result.Output -join "`r`n" Write-Host "Activity `Error` section:" -foregroundcolor "Yellow" $result.Error -join "`r`n"
Berikut adalah output dari eksekusi sampel:
Pipeline run status: In Progress ResourceGroupName : ADFV2SampleRG2 DataFactoryName : SampleV2DataFactory2 ActivityName : MyHiveActivity PipelineRunId : 000000000-0000-0000-000000000000000000 PipelineName : MyHivePipeline Input : {getDebugInfo, scriptPath, scriptLinkedService, defines} Output : LinkedServiceName : ActivityRunStart : 9/18/2017 6:58:13 AM ActivityRunEnd : DurationInMs : Status : InProgress Error : Pipeline ' MyHivePipeline' run finished. Result: ResourceGroupName : ADFV2SampleRG2 DataFactoryName : SampleV2DataFactory2 ActivityName : MyHiveActivity PipelineRunId : 0000000-0000-0000-0000-000000000000 PipelineName : MyHivePipeline Input : {getDebugInfo, scriptPath, scriptLinkedService, defines} Output : {logLocation, clusterInUse, jobId, ExecutionProgress...} LinkedServiceName : ActivityRunStart : 9/18/2017 6:58:13 AM ActivityRunEnd : 9/18/2017 6:59:16 AM DurationInMs : 63636 Status : Succeeded Error : {errorCode, message, failureType, target} Activity Output section: "logLocation": "wasbs://adfjobs@adfv2samplestor.blob.core.windows.net/HiveQueryJobs/000000000-0000-47c3-9b28-1cdc7f3f2ba2/18_09_2017_06_58_18_023/Status" "clusterInUse": "https://adfv2HivePrivate.azurehdinsight.net" "jobId": "job_1505387997356_0024" "ExecutionProgress": "Succeeded" "effectiveIntegrationRuntime": "MySelfhostedIR" Activity Error section: "errorCode": "" "message": "" "failureType": "" "target": "MyHiveActivity"
Periksa folder
outputfolder
untuk file baru yang dibuat sebagai hasil kueri Apache Hive, yang akan terlihat seperti sampel output berikut:8 en-US SCH-i500 California 23 en-US Incredible Pennsylvania 212 en-US SCH-i500 New York 212 en-US SCH-i500 New York 212 en-US SCH-i500 New York 212 en-US SCH-i500 New York 212 en-US SCH-i500 New York 212 en-US SCH-i500 New York 212 en-US SCH-i500 New York 212 en-US SCH-i500 New York 212 en-US SCH-i500 New York 212 en-US SCH-i500 New York 212 en-US SCH-i500 New York 212 en-US SCH-i500 New York 246 en-US SCH-i500 District Of Columbia 246 en-US SCH-i500 District Of Columbia
Konten terkait
Anda melakukan langkah-langkah berikut dalam tutorial ini:
- Membuat pabrik data.
- Menulis dan menyiapkan waktu runtime integrasi yang dihosting sendiri
- Menulis dan menyebarkan layanan tertaut.
- Tulis dan sebarkan alur yang berisi aktivitas Apache Hive.
- Memulai eksekusi alur.
- Memantau eksekusi alur
- verifikasi output.
Lanjutkan ke tutorial berikut untuk mempelajari tentang mengubah data dengan menggunakan kluster Spark di Azure:
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk