Menggunakan User Defined Functions (UDF) Python dengan Apache Hive dan Apache Pig di HDInsight

Pelajari cara menggunakan fungsi yang ditentukan pengguna (UDF) Python dengan streaming Apache Hive dan Apache Hadoop di Azure HDInsight.

Python di HDInsight

Python2.7 diinstal secara default pada HDInsight 3.0 dan yang lebih baru. Apache Hive dapat digunakan dengan versi Python ini untuk pemrosesan streaming. Pemrosesan streaming menggunakan STDOUT dan STDIN untuk meneruskan data antara Hive dan UDF.

HDInsight juga menyertakan Jython, yang merupakan implementasi Python yang ditulis di Java. Jython berjalan langsung di Komputer Virtual Java dan tidak menggunakan streaming. Jython adalah interpreter Python yang direkomendasikan saat menggunakan Python dengan Pig.

Prasyarat

Catatan

Akun penyimpanan yang digunakan dalam artikel ini adalah Penyimpanan Azure dengan transfer aman diaktifkan dan dengan demikian wasbs digunakan di seluruh artikel.

Konfigurasi penyimpanan

Tidak diperlukan tindakan jika akun penyimpanan yang digunakan jenis Storage (general purpose v1) atau StorageV2 (general purpose v2). Proses dalam artikel ini menghasilkan output ke setidaknya /tezstaging. Konfigurasi hadoop default berisi /tezstaging dalam fs.azure.page.blob.dir variabel konfigurasi di core-site.xml untuk layanan HDFS. Konfigurasi ini menyebabkan output ke direktori menjadi blob halaman, yang tidak didukung untuk jenis BlobStorageakun penyimpanan . Untuk menggunakan BlobStorage untuk artikel ini, hapus /tezstaging dari variabel konfigurasi fs.azure.page.blob.dir. Konfigurasi dapat diakses dari UI Ambari. Jika tidak, Anda menerima pesan kesalahan: Page blob is not supported for this account type.

Peringatan

Langkah-langkah dalam dokumen ini membuat asumsi berikut:

  • Anda membuat skrip Python di lingkungan pengembangan lokal Anda.
  • Anda mengunggah skrip ke HDInsight menggunakan perintah scp atau skrip PowerShell yang disediakan.

Jika Anda ingin menggunakan Azure Cloud Shell (bash) untuk bekerja dengan HDInsight, maka Anda harus:

  • Buat skrip di dalam lingkungan shell cloud.
  • Gunakan scp untuk mengunggah file dari cloud shell ke HDInsight.
  • Gunakan ssh dari shell cloud untuk menyambungkan ke HDInsight dan menjalankan contoh.

Apache Hive

Python dapat digunakan sebagai UDF dari Hive melalui pernyataan TRANSFORM HiveQL. Misalnya, HiveQL berikut memanggil file hiveudf.py yang disimpan di akun Penyimpanan Azure default untuk kluster.

add file wasbs:///hiveudf.py;

SELECT TRANSFORM (clientid, devicemake, devicemodel)
    USING 'python hiveudf.py' AS
    (clientid string, phoneLabel string, phoneHash string)
FROM hivesampletable
ORDER BY clientid LIMIT 50;

Berikut yang dilakukan contoh ini:

  1. Pernyataan add file di awal file menambahkan file hiveudf.py ke cache terdistribusi, sehingga dapat diakses oleh semua node di kluster.
  2. Pernyataan SELECT TRANSFORM ... USING memilih data dari hivesampletable. Ini juga meneruskan nilai klien, devicemake, dan devicemodel ke skrip hiveudf.py.
  3. Klausa AS menjelaskan bidang yang dikembalikan dari hiveudf.py.

Membuat file

Pada lingkungan pengembangan Anda, buat file teks bernama hiveudf.py. Gunakan kode berikut sebagai konten file:

#!/usr/bin/env python
import sys
import string
import hashlib

while True:
    line = sys.stdin.readline()
    if not line:
        break

    line = string.strip(line, "\n ")
    clientid, devicemake, devicemodel = string.split(line, "\t")
    phone_label = devicemake + ' ' + devicemodel
    print "\t".join([clientid, phone_label, hashlib.md5(phone_label).hexdigest()])

Skrip ini melakukan tindakan berikut:

  1. Membaca baris data dari STDIN.
  2. Karakter baris baru berikutnya dihapus menggunakan string.strip(line, "\n ").
  3. Saat melakukan pemrosesan streaming, satu baris tunggal berisi semua nilai dengan karakter tab di antara setiap nilai. Jadi, string.split(line, "\t") dapat digunakan untuk membagi input di setiap tab, dengan hanya mengembalikan bidang.
  4. Ketika pemrosesan selesai, output harus ditulis ke STDOUT sebagai satu baris tunggal, dengan tab di antara setiap bidang. Contohnya:print "\t".join([clientid, phone_label, hashlib.md5(phone_label).hexdigest()])
  5. Loop while berulang hingga tidak ada line yang dibaca.

Output skrip adalah penggabungan dari nilai input untuk devicemake dan devicemodel, dan hash dari nilai yang digabungkan.

Mengunggah file (shell)

Perintah berikut, mengganti sshuser dengan nama pengguna aktual jika berbeda. Ganti mycluster dengan nama kluster aktual yang sebenarnya. Pastikan direktori kerja Anda adalah tempat filenya berada.

  1. Gunakan scp untuk menyalin file ke kluster HDInsight Anda. Edit dan masukkan perintah:

    scp hiveudf.py sshuser@mycluster-ssh.azurehdinsight.net:
    
  2. Gunakan SSH untuk terhubung ke kluster. Edit dan masukkan perintah:

    ssh sshuser@mycluster-ssh.azurehdinsight.net
    
  3. Dari sesi SSH, tambahkan file Python yang diunggah sebelumnya ke penyimpanan untuk kluster.

    hdfs dfs -put hiveudf.py /hiveudf.py
    

Gunakan UDF Hive (shell)

  1. Untuk menyambungkan ke Hive, gunakan perintah berikut dari sesi SSH Anda yang terbuka:

    beeline -u 'jdbc:hive2://headnodehost:10001/;transportMode=http'
    

    Perintah ini memulai klien Beeline.

  2. Masukkan kueri berikut ada prompt 0: jdbc:hive2://headnodehost:10001/>:

    add file wasbs:///hiveudf.py;
    SELECT TRANSFORM (clientid, devicemake, devicemodel)
        USING 'python hiveudf.py' AS
        (clientid string, phoneLabel string, phoneHash string)
    FROM hivesampletable
    ORDER BY clientid LIMIT 50;
    
  3. Setelah baris terakhir dimasukkan, pekerjaan harus dimulai. Setelah pekerjaan selesai, akan dikembalikan output yang mirip dengan contoh berikut:

    100041    RIM 9650    d476f3687700442549a83fac4560c51c
    100041    RIM 9650    d476f3687700442549a83fac4560c51c
    100042    Apple iPhone 4.2.x    375ad9a0ddc4351536804f1d5d0ea9b9
    100042    Apple iPhone 4.2.x    375ad9a0ddc4351536804f1d5d0ea9b9
    100042    Apple iPhone 4.2.x    375ad9a0ddc4351536804f1d5d0ea9b9
    
  4. Untuk keluar dari Beeline, masukkan perintah berikut:

    !q
    

Mengunggah file (PowerShell)

PowerShell juga dapat digunakan untuk menjalankan kueri Hive dari jarak jauh. Pastikan direktori kerja Anda adalah tempat hiveudf.py berada. Gunakan skrip PowerShell berikut ini untuk menjalankan kueri Hive yang menggunakan skrip hiveudf.py:

# Login to your Azure subscription
# Is there an active Azure subscription?
$sub = Get-AzSubscription -ErrorAction SilentlyContinue
if(-not($sub))
{
    Connect-AzAccount
}

# If you have multiple subscriptions, set the one to use
# Select-AzSubscription -SubscriptionId "<SUBSCRIPTIONID>"

# Revise file path as needed
$pathToStreamingFile = ".\hiveudf.py"

# Get cluster info
$clusterName = Read-Host -Prompt "Enter the HDInsight cluster name"
$clusterInfo = Get-AzHDInsightCluster -ClusterName $clusterName
$resourceGroup = $clusterInfo.ResourceGroup
$storageAccountName=$clusterInfo.DefaultStorageAccount.split('.')[0]
$container=$clusterInfo.DefaultStorageContainer
$storageAccountKey=(Get-AzStorageAccountKey `
   -ResourceGroupName $resourceGroup `
   -Name $storageAccountName)[0].Value

# Create an Azure Storage context
$context = New-AzStorageContext `
    -StorageAccountName $storageAccountName `
    -StorageAccountKey $storageAccountKey

# Upload local files to an Azure Storage blob
Set-AzStorageBlobContent `
    -File $pathToStreamingFile `
    -Blob "hiveudf.py" `
    -Container $container `
    -Context $context

Catatan

Untuk informasi selengkapnya tentang mengunggah file, lihat dokumen Mengunggah data untuk pekerjaan Apache Hadoop di HDInsight.

Menggunakan Hive UDF

# Script should stop on failures
$ErrorActionPreference = "Stop"

# Login to your Azure subscription
# Is there an active Azure subscription?
$sub = Get-AzSubscription -ErrorAction SilentlyContinue
if(-not($sub))
{
    Connect-AzAccount
}

# If you have multiple subscriptions, set the one to use
# Select-AzSubscription -SubscriptionId "<SUBSCRIPTIONID>"

# Get cluster info
$clusterName = Read-Host -Prompt "Enter the HDInsight cluster name"
$creds=Get-Credential -UserName "admin" -Message "Enter the login for the cluster"

$HiveQuery = "add file wasbs:///hiveudf.py;" +
                "SELECT TRANSFORM (clientid, devicemake, devicemodel) " +
                "USING 'python hiveudf.py' AS " +
                "(clientid string, phoneLabel string, phoneHash string) " +
                "FROM hivesampletable " +
                "ORDER BY clientid LIMIT 50;"

# Create Hive job object
$jobDefinition = New-AzHDInsightHiveJobDefinition `
    -Query $HiveQuery

# For status bar updates
$activity="Hive query"

# Progress bar (optional)
Write-Progress -Activity $activity -Status "Starting query..."

# Start defined Azure HDInsight job on specified cluster.
$job = Start-AzHDInsightJob `
    -ClusterName $clusterName `
    -JobDefinition $jobDefinition `
    -HttpCredential $creds

# Progress bar (optional)
Write-Progress -Activity $activity -Status "Waiting on query to complete..."

# Wait for completion or failure of specified job
Wait-AzHDInsightJob `
    -JobId $job.JobId `
    -ClusterName $clusterName `
    -HttpCredential $creds

# Uncomment the following to see stderr output
<#
Get-AzHDInsightJobOutput `
   -Clustername $clusterName `
   -JobId $job.JobId `
   -HttpCredential $creds `
   -DisplayOutputType StandardError
#>

# Progress bar (optional)
Write-Progress -Activity $activity -Status "Retrieving output..."

# Gets the log output
Get-AzHDInsightJobOutput `
    -Clustername $clusterName `
    -JobId $job.JobId `
    -HttpCredential $creds

Output untuk pekerjaan Hive akan tampak mirip dengan contoh berikut:

100041    RIM 9650    d476f3687700442549a83fac4560c51c
100041    RIM 9650    d476f3687700442549a83fac4560c51c
100042    Apple iPhone 4.2.x    375ad9a0ddc4351536804f1d5d0ea9b9
100042    Apple iPhone 4.2.x    375ad9a0ddc4351536804f1d5d0ea9b9
100042    Apple iPhone 4.2.x    375ad9a0ddc4351536804f1d5d0ea9b9

Apache Pig UDF

Skrip Python dapat digunakan sebagai UDF dari Pig melalui pernyataan GENERATE. Anda dapat menjalankan skrip menggunakan Jython atau C Python.

  • Jython berjalan di JVM, dan secara native dapat dipanggil dari Pig.
  • C Python adalah proses eksternal, sehingga data dari Pig di JVM dikirim ke skrip yang berjalan dalam proses Python. Output dari skrip Python dikirim kembali ke Pig.

Untuk menentukan interpreter Python, gunakan register saat merujuk skrip Python. Contoh-contoh berikut mendaftarkan skrip dengan Pig sebagai myfuncs:

  • Untuk menggunakan Jython: register '/path/to/pigudf.py' using jython as myfuncs;
  • Untuk menggunakan C Python: register '/path/to/pigudf.py' using streaming_python as myfuncs;

Penting

Saat menggunakan Jython, jalur ke file pig_jython dapat berupa jalur lokal atau jalur WASBS://. Namun, saat menggunakan C Python, Anda harus mereferensikan file pada sistem file lokal node yang Anda gunakan untuk mengirimkan pekerjaan Pig.

Setelah pendaftaran sebelumnya, Pig Latin untuk contoh ini sama untuk keduanya:

LOGS = LOAD 'wasbs:///example/data/sample.log' as (LINE:chararray);
LOG = FILTER LOGS by LINE is not null;
DETAILS = FOREACH LOG GENERATE myfuncs.create_structure(LINE);
DUMP DETAILS;

Berikut yang dilakukan contoh ini:

  1. Baris pertama memuat file data sampel, sample.log ke dalam LOGS. Ini juga mendefinisikan setiap catatan sebagai chararray.
  2. Baris berikutnya memfilter nilai kosong apa pun, memulihkan hasil operasi ke dalam LOG.
  3. Selanjutnya akan mengiterasi rekaman dalam LOG dan menggunakan GENERATE untuk memanggil metode create_structure yang terkandung dalam skrip Python/Jython yang dimuat sebagai myfuncs. LINE digunakan untuk meneruskan rekaman saat ini ke fungsi.
  4. Akhirnya, output dibuang ke STDOUT menggunakan perintah DUMP. Perintah ini menampilkan hasil setelah operasi selesai.

Membuat file

Pada lingkungan pengembangan Anda, buat file teks bernama pigudf.py. Gunakan kode berikut sebagai konten file:

# Uncomment the following if using C Python
#from pig_util import outputSchema


@outputSchema("log: {(date:chararray, time:chararray, classname:chararray, level:chararray, detail:chararray)}")
def create_structure(input):
    if (input.startswith('java.lang.Exception')):
        input = input[21:len(input)] + ' - java.lang.Exception'
    date, time, classname, level, detail = input.split(' ', 4)
    return date, time, classname, level, detail

Dalam contoh Pig Latin, input LINE didefinisikan sebagai chararray karena tidak ada skema yang konsisten untuk input. Skrip Python mengubah data menjadi skema yang konsisten untuk output.

  1. Pernyataan @outputSchema mendefinisikan format data yang dikembalikan ke Pig. Dalam hal ini berupa kantung data, yang merupakan jenis data Pig. Tas berisi bidang berikut, yang semuanya adalah chararray (string):

    • date - tanggal entr log dibuat
    • time - waktu entri log dibuat
    • classname - nama kelas entri dibuat untuk
    • level - tingkat log
    • detail - detail verbose untuk entri log
  2. Selanjutnya, def create_structure(input) menentukan fungsi tempat Pig meneruskan item baris.

  3. Contoh data, sample.log sebagian besar sesuai dengan tanggal, waktu, nama kelas, tingkat, dan skema detail. Namun, ini berisi beberapa baris yang dimulai dengan *java.lang.Exception* . Baris-baris ini harus dimodifikasi agar sesuai dengan skema. Pernyataan if memeriksanya, kemudian memroses data input untuk memindahkan string *java.lang.Exception* ke akhir, membawa data sejalan dengan skema output yang diharapkan.

  4. Selanjutnya, perintah split digunakan untuk membagi data pada empat karakter spasi pertama. Output ditetapkan ke dalam date, time, classname, level, dan detail.

  5. Akhirnya, nilai-nilai dikembalikan ke Pig.

Ketika data dikembalikan ke Pig, data memiliki skema yang konsisten seperti yang didefinisikan dalam pernyataan @outputSchema.

Mengunggah file (shell)

Dalam perintah di bawah, ganti sshuser dengan nama pengguna yang sebenarnya jika berbeda. Ganti mycluster dengan nama kluster aktual yang sebenarnya. Pastikan direktori kerja Anda adalah tempat filenya berada.

  1. Gunakan scp untuk menyalin file ke kluster HDInsight Anda. Edit dan masukkan perintah:

    scp pigudf.py sshuser@mycluster-ssh.azurehdinsight.net:
    
  2. Gunakan SSH untuk terhubung ke kluster. Edit dan masukkan perintah:

    ssh sshuser@mycluster-ssh.azurehdinsight.net
    
  3. Dari sesi SSH, tambahkan file Python yang diunggah sebelumnya ke penyimpanan untuk kluster.

    hdfs dfs -put pigudf.py /pigudf.py
    

Menggunakan Pig UDF (shell)

  1. Untuk menyambungkan ke pig, gunakan perintah berikut dari sesi SSH Anda yang terbuka:

    pig
    
  2. Masukkan pernyataan berikut pada promt grunt>:

    Register wasbs:///pigudf.py using jython as myfuncs;
    LOGS = LOAD 'wasbs:///example/data/sample.log' as (LINE:chararray);
    LOG = FILTER LOGS by LINE is not null;
    DETAILS = foreach LOG generate myfuncs.create_structure(LINE);
    DUMP DETAILS;
    
  3. Setelah memasuki baris terakhir, pekerjaan akan dimulai. Setelah pekerjaan selesai, maka mengembalikan output yang mirip dengan data berikut:

    ((2012-02-03,20:11:56,SampleClass5,[TRACE],verbose detail for id 990982084))
    ((2012-02-03,20:11:56,SampleClass7,[TRACE],verbose detail for id 1560323914))
    ((2012-02-03,20:11:56,SampleClass8,[DEBUG],detail for id 2083681507))
    ((2012-02-03,20:11:56,SampleClass3,[TRACE],verbose detail for id 1718828806))
    ((2012-02-03,20:11:56,SampleClass3,[INFO],everything normal for id 530537821))
    
  4. Gunakan quit untuk keluar dari shell Grunt, lalu gunakan yang berikut ini untuk mengedit file pigudf.py pada sistem file lokal:

    nano pigudf.py
    
  5. Setelah berada di editor, hapus komentar baris berikut dengan menghapus karakter # dari awal baris:

    #from pig_util import outputSchema
    

    Baris ini memodifikasi skrip Python untuk bekerja dengan C Python alih-alih Jython. Setelah perubahan dilakukan, gunakan Ctrl+X untuk keluar dari editor. Pilih Y, lalu Enter untuk menyimpan perubahan.

  6. Gunakan perintah pig untuk memulai shell lagi. Setelah Anda berada di prompt grunt>, gunakan yang berikut ini untuk menjalankan skrip Python menggunakan interpreter C Python.

    Register 'pigudf.py' using streaming_python as myfuncs;
    LOGS = LOAD 'wasbs:///example/data/sample.log' as (LINE:chararray);
    LOG = FILTER LOGS by LINE is not null;
    DETAILS = foreach LOG generate myfuncs.create_structure(LINE);
    DUMP DETAILS;
    

    Setelah pekerjaan ini selesai, Anda akan melihat output yang sama seperti ketika Anda sebelumnya menjalankan skrip menggunakan Jython.

Mengunggah file (PowerShell)

PowerShell juga dapat digunakan untuk menjalankan kueri Hive dari jarak jauh. Pastikan direktori kerja Anda adalah tempat pigudf.py berada. Gunakan skrip PowerShell berikut ini untuk menjalankan kueri Hive yang menggunakan skrip pigudf.py:

# Login to your Azure subscription
# Is there an active Azure subscription?
$sub = Get-AzSubscription -ErrorAction SilentlyContinue
if(-not($sub))
{
    Connect-AzAccount
}

# If you have multiple subscriptions, set the one to use
# Select-AzSubscription -SubscriptionId "<SUBSCRIPTIONID>"

# Revise file path as needed
$pathToJythonFile = ".\pigudf.py"


# Get cluster info
$clusterName = Read-Host -Prompt "Enter the HDInsight cluster name"
$clusterInfo = Get-AzHDInsightCluster -ClusterName $clusterName
$resourceGroup = $clusterInfo.ResourceGroup
$storageAccountName=$clusterInfo.DefaultStorageAccount.split('.')[0]
$container=$clusterInfo.DefaultStorageContainer
$storageAccountKey=(Get-AzStorageAccountKey `
   -ResourceGroupName $resourceGroup `
   -Name $storageAccountName)[0].Value

# Create an Azure Storage context
$context = New-AzStorageContext `
    -StorageAccountName $storageAccountName `
    -StorageAccountKey $storageAccountKey

# Upload local files to an Azure Storage blob
Set-AzStorageBlobContent `
    -File $pathToJythonFile `
    -Blob "pigudf.py" `
    -Container $container `
    -Context $context

Menggunakan UDF Pig (PowerShell)

Catatan

Ketika mengirimkan pekerjaan dari jarak jauh menggunakan PowerShell, Anda tidak dapat menggunakan C Python sebagai interpreter.

PowerShell juga dapat digunakan untuk menjalankan pekerjaan Pig Latin. Untuk menjalankan pekerjaan Pig Latin yang menggunakan skrip pigudf.py, gunakan skrip PowerShell berikut:

# Script should stop on failures
$ErrorActionPreference = "Stop"

# Login to your Azure subscription
# Is there an active Azure subscription?
$sub = Get-AzSubscription -ErrorAction SilentlyContinue
if(-not($sub))
{
    Connect-AzAccount
}

# Get cluster info
$clusterName = Read-Host -Prompt "Enter the HDInsight cluster name"
$creds=Get-Credential -UserName "admin" -Message "Enter the login for the cluster"


$PigQuery = "Register wasbs:///pigudf.py using jython as myfuncs;" +
            "LOGS = LOAD 'wasbs:///example/data/sample.log' as (LINE:chararray);" +
            "LOG = FILTER LOGS by LINE is not null;" +
            "DETAILS = foreach LOG generate myfuncs.create_structure(LINE);" +
            "DUMP DETAILS;"

# Create Pig job object
$jobDefinition = New-AzHDInsightPigJobDefinition -Query $PigQuery

# For status bar updates
$activity="Pig job"

# Progress bar (optional)
Write-Progress -Activity $activity -Status "Starting job..."

# Start defined Azure HDInsight job on specified cluster.
$job = Start-AzHDInsightJob `
    -ClusterName $clusterName `
    -JobDefinition $jobDefinition `
    -HttpCredential $creds

# Progress bar (optional)
Write-Progress -Activity $activity -Status "Waiting for the Pig job to complete..."

# Wait for completion or failure of specified job
Wait-AzHDInsightJob `
    -Job $job.JobId `
    -ClusterName $clusterName `
    -HttpCredential $creds

# Uncomment the following to see stderr output
<#
Get-AzHDInsightJobOutput `
    -Clustername $clusterName `
    -JobId $job.JobId `
    -HttpCredential $creds `
    -DisplayOutputType StandardError
#>

# Progress bar (optional)
Write-Progress -Activity $activity "Retrieving output..."

# Gets the log output
Get-AzHDInsightJobOutput `
    -Clustername $clusterName `
    -JobId $job.JobId `
    -HttpCredential $creds

Output untuk pekerjaan Pig akan tampak mirip dengan data berikut:

((2012-02-03,20:11:56,SampleClass5,[TRACE],verbose detail for id 990982084))
((2012-02-03,20:11:56,SampleClass7,[TRACE],verbose detail for id 1560323914))
((2012-02-03,20:11:56,SampleClass8,[DEBUG],detail for id 2083681507))
((2012-02-03,20:11:56,SampleClass3,[TRACE],verbose detail for id 1718828806))
((2012-02-03,20:11:56,SampleClass3,[INFO],everything normal for id 530537821))

Pemecahan Masalah

Kesalahan saat menjalankan pekerjaan

Saat menjalankan pekerjaan hive, Anda mungkin mengalami kesalahan yang mirip dengan teks berikut:

Caused by: org.apache.hadoop.hive.ql.metadata.HiveException: [Error 20001]: An error occurred while reading or writing to your custom script. It may have crashed with an error.

Masalah ini mungkin disebabkan oleh akhir baris dalam file Python. Banyak editor Windows default untuk menggunakan CRLF sebagai akhir baris, tetapi aplikasi Linux biasanya mengharapkan LF.

Anda bisa menggunakan pernyataan PowerShell berikut untuk menghapus karakter CR sebelum mengunggah file ke HDInsight:

Write-Progress -Activity $activity -Status "Waiting for the Pig job to complete..."

# Wait for completion or failure of specified job

Skrip PowerShell

Kedua contoh skrip PowerShell yang digunakan untuk menjalankan contoh tersebut berisi baris yang dikomentari yang menampilkan output kesalahan untuk pekerjaan tersebut. Jika Anda tidak melihat output yang diharapkan untuk pekerjaan tersebut, batalkan komentar baris berikut dan lihat apakah informasi kesalahan menunjukkan masalah.

$activity="Pig job"

# Progress bar (optional)
Write-Progress -Activity $activity -Status "Starting job..."

Informasi kesalahan (STDERR) dan hasil pekerjaan (STDOUT) juga dicatat ke penyimpanan HDInsight Anda.

Untuk pekerjaan ini... Lihat file-file berikut dalam wadah blob
Hive /HivePython/stderr

/HivePython/stdout

Pig /PigPython/stderr

/PigPython/stdout

Langkah berikutnya

Jika Anda perlu memuat modul Python yang tidak disediakan secara default, lihat Cara menerapkan modul ke Azure HDInsight.

Untuk cara lain untuk menggunakan Pig, Hive, dan untuk mempelajari tentang menggunakan MapReduce, lihat dokumen berikut ini: