Felhasználó által definiált Python-függvények (UDF) használata az Apache Hive és az Apache Pig használatával a HDInsightban

Megtudhatja, hogyan használhatja a Python felhasználó által definiált függvényeket (UDF) az Apache Hive és az Apache Pig használatával az Apache Hadoopban az Azure HDInsightban.

Python on HDInsight

Python2.7 alapértelmezés szerint a HDInsight 3.0-s és újabb verzióira van telepítve. Az Apache Hive a Python ezen verziójával használható streamfeldolgozáshoz. A streamfeldolgozás STDOUT és STDIN használatával továbbít adatokat a Hive és az UDF között.

A HDInsight tartalmazza a Jythont is, amely egy Java nyelven írt Python-implementáció. A Jython közvetlenül a Java virtuális gépen fut, és nem használ streamelést. A Jython az ajánlott Python-értelmező a Python és a Pig használatakor.

Előfeltételek

Megjegyzés

A cikkben használt tárfiók az Azure Storage volt, amelyen engedélyezve van a biztonságos átvitel , és így wasbs a cikk egészében használható.

Tároló konfigurálása

Nincs szükség műveletre, ha a használt tárfiók típusa Storage (general purpose v1) vagy StorageV2 (general purpose v2). A cikkben szereplő folyamat legalább /tezstaginga kimenetét állítja elő. Az alapértelmezett hadoop-konfiguráció a fs.azure.page.blob.dir szolgáltatás HDFSkonfigurációs változójában core-site.xml található/tezstaging. Ez a konfiguráció miatt a könyvtár kimenete lapblobok lesznek, amelyek nem támogatottak a tárfiók típusa esetében BlobStorage. BlobStorage A cikk használatához távolítsa el /tezstaging a fs.azure.page.blob.dir konfigurációs változót. A konfiguráció az Ambari felhasználói felületén érhető el. Ellenkező esetben a következő hibaüzenet jelenik meg: Page blob is not supported for this account type.

Figyelmeztetés

A dokumentum lépései az alábbi feltételezéseket teszik lehetővé:

  • A Python-szkripteket a helyi fejlesztési környezetben hozza létre.
  • A szkripteket a paranccsal vagy a scp megadott PowerShell-szkripttel töltheti fel a HDInsightba.

Ha az Azure Cloud Shell (bash) használatával szeretné használni a HDInsightot, a következőket kell tennie:

  • Hozza létre a szkripteket a Cloud Shell-környezetben.
  • A használatával scp feltöltheti a fájlokat a Cloud Shellből a HDInsightba.
  • A ssh Cloud Shell használatával csatlakozhat a HDInsighthoz, és futtathatja a példákat.

Apache Hive UDF

A Python UDF-ként használható a Hive-ból a HiveQL TRANSFORM utasításon keresztül. A következő HiveQL például meghívja a hiveudf.py fürt alapértelmezett Azure Storage-fiókjában tárolt fájlt.

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;

A példa a következő:

  1. A add file fájl elején található utasítás hozzáadja a hiveudf.py fájlt az elosztott gyorsítótárhoz, így a fürt összes csomópontja számára elérhető.
  2. A SELECT TRANSFORM ... USING utasítás kiválasztja az adatokat a hivesampletableelemből. A clientid, devicemake és devicemodel értékeket is átadja a hiveudf.py szkriptnek.
  3. A AS záradék a visszaadott mezőket hiveudf.pyírja le.

Fájl létrehozása

A fejlesztési környezetben hozzon létre egy nevű szövegfájlt hiveudf.py. A fájl tartalmaként használja a következő kódot:

#!/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()])

Ez a szkript a következő műveleteket hajtja végre:

  1. Beolvas egy adatsort az STDIN-ből.
  2. A záró newline karakter a paranccsal string.strip(line, "\n ")lesz eltávolítva.
  3. Adatfolyam-feldolgozás során egyetlen sor tartalmazza az összes értéket, az egyes értékek között tabulátor karakterrel. Így string.split(line, "\t") minden lapon feloszthatja a bemenetet, és csak a mezőket adja vissza.
  4. Ha a feldolgozás befejeződött, a kimenetet egyetlen sorként kell megírni az STDOUT-ba, az egyes mezők között egy tabulátorral. Például: print "\t".join([clientid, phone_label, hashlib.md5(phone_label).hexdigest()]).
  5. A while hurok addig ismétlődik, amíg nem line lesz beolvasva.

A szkript kimenete a és devicemodela bemeneti értékeinek devicemake összefűzése, valamint az összefűzött érték kivonata.

Fájl feltöltése (rendszerhéj)

A következő parancs lecseréli sshuser a elemet a tényleges felhasználónévre, ha eltérő. Cserélje le mycluster a elemet a tényleges fürtnévre. Győződjön meg arról, hogy a munkakönyvtárban található a fájl.

  1. A használatával scp másolja a fájlokat a HDInsight-fürtbe. Szerkessze és írja be a parancsot:

    scp hiveudf.py sshuser@mycluster-ssh.azurehdinsight.net:
    
  2. SSH használatával csatlakozzon a fürthöz. Szerkessze és írja be a parancsot:

    ssh sshuser@mycluster-ssh.azurehdinsight.net
    
  3. Az SSH-munkamenetből adja hozzá a korábban feltöltött Python-fájlokat a fürt tárterületéhez.

    hdfs dfs -put hiveudf.py /hiveudf.py
    

Hive UDF (shell) használata

  1. A Hive-hoz való csatlakozáshoz használja a következő parancsot a megnyitott SSH-munkamenetből:

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

    Ez a parancs elindítja a Beeline-ügyfelet.

  2. Írja be a következő lekérdezést a parancssorba 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. Az utolsó sor beírása után a feladatnak el kell indulnia. A feladat befejeződése után a következő példához hasonló kimenetet ad vissza:

    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. A Beeline bezárásához írja be a következő parancsot:

    !q
    

Fájl feltöltése (PowerShell)

A PowerShell a Hive-lekérdezések távoli futtatására is használható. Győződjön meg arról, hogy a munkakönyvtár a helyén hiveudf.py van. A következő PowerShell-szkripttel futtasson egy Hive-lekérdezést, amely a hiveudf.py szkriptet használja:

# 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

Megjegyzés

További információ a fájlok feltöltéséről: Adatok feltöltése Apache Hadoop-feladatokhoz a HDInsightban .

A Hive UDF használata

# 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

A Hive-feladat kimenetének az alábbi példához hasonlóan kell megjelennie:

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

A Python-szkript uDF-ként használható a Pigből az GENERATE utasításon keresztül. A szkriptet a Jython vagy a C Python használatával futtathatja.

  • A Jython a JVM-en fut, és natív módon meghívható a Pigből.
  • A C Python egy külső folyamat, így a JVM-en lévő Pig adatai a Python-folyamatban futó szkriptnek lesznek elküldve. A Python-szkript kimenete vissza lesz küldve a Pigbe.

A Python-értelmező megadásához használja register a parancsot a Python-szkriptre való hivatkozáskor. Az alábbi példák szkripteket regisztrálnak a Pigben a következőként myfuncs:

  • A Jython használata: register '/path/to/pigudf.py' using jython as myfuncs;
  • A C Python használata: register '/path/to/pigudf.py' using streaming_python as myfuncs;

Fontos

A Jython használatakor a pig_jython fájl elérési útja lehet helyi vagy WASBS:// elérési út. A C Python használatakor azonban hivatkoznia kell egy fájlra a Pig-feladat elküldéséhez használt csomópont helyi fájlrendszerében.

A korábbi regisztráció után a példához tartozó Pig Latin ugyanaz:

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;

A példa a következő:

  1. Az első sor betölti a mintaadatfájlt a fájlbaLOGS. sample.log Emellett az egyes rekordokat is definiálja.chararray
  2. A következő sor kiszűri a null értékeket, és a művelet eredményét a következőbe LOGtárolja: .
  3. Ezután iterálja a rekordokat LOG , és a metódus meghívására használja GENERATE a create_structure Python/Jython szkriptben található metódust myfuncs. LINE az aktuális rekordnak a függvénynek való átadására szolgál.
  4. Végül a kimenetek az STDOUT-ba kerülnek a DUMP paranccsal. Ez a parancs a művelet befejeződése után jeleníti meg az eredményeket.

Fájl létrehozása

A fejlesztési környezetben hozzon létre egy nevű szövegfájlt pigudf.py. A fájl tartalmaként használja a következő kódot:

# 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

A Pig Latin példában a LINE bemenet chararrayként van definiálva, mert nincs konzisztens séma a bemenethez. A Python-szkript konzisztens kimeneti sémává alakítja az adatokat.

  1. Az @outputSchema utasítás a Pignek visszaadott adatok formátumát határozza meg. Ebben az esetben ez egy adatcsomag, amely Pig adattípus. A zsák a következő mezőket tartalmazza, amelyek mindegyike chararray (sztringek):

    • date – a naplóbejegyzés létrehozásának dátuma
    • time – a naplóbejegyzés létrehozásának időpontja
    • classname – a bejegyzéshez létrehozott osztálynév
    • level – a naplószint
    • detail – részletes adatok a naplóbejegyzéshez
  2. Ezután a def create_structure(input) definiálja azt a függvényt, amelybe a Pig továbbítja a sorelemeket.

  3. A példaadatok többnyire sample.logmegfelelnek a dátum, az idő, az osztálynév, a szint és a részletek sémájának. Azonban tartalmaz néhány sort, amelyek a kezdetével *java.lang.Exception*kezdődnek. Ezeket a sorokat úgy kell módosítani, hogy megfeleljenek a sémának. A if utasítás ellenőrzi ezeket, majd masszírozza a bemeneti adatokat, hogy a sztringet a *java.lang.Exception* végére helyezze, így az adatok összhangban vannak a várt kimeneti sémával.

  4. Ezután a split parancs az első négy szóközkarakterben lévő adatok felosztására szolgál. A kimenet a következőhöz van rendelve: date, time, classname, levelés detail.

  5. Végül a rendszer visszaadja az értékeket a Pignek.

Amikor az adatok visszakerülnek a Pigbe, az utasításban @outputSchema meghatározott konzisztens sémával rendelkezik.

Fájl feltöltése (rendszerhéj)

Az alábbi parancsokban cserélje le a elemet sshuser a tényleges felhasználónévre, ha eltér. Cserélje le mycluster a elemet a tényleges fürtnévre. Győződjön meg arról, hogy a munkakönyvtárban található a fájl.

  1. A használatával scp másolja a fájlokat a HDInsight-fürtbe. Szerkessze és írja be a parancsot:

    scp pigudf.py sshuser@mycluster-ssh.azurehdinsight.net:
    
  2. A fürthöz való csatlakozáshoz használja az SSH-t. Szerkessze és írja be a parancsot:

    ssh sshuser@mycluster-ssh.azurehdinsight.net
    
  3. Az SSH-munkamenetben adja hozzá a korábban feltöltött Python-fájlokat a fürt tárterületéhez.

    hdfs dfs -put pigudf.py /pigudf.py
    

Pig UDF használata (héj)

  1. A pighez való csatlakozáshoz használja a következő parancsot a megnyitott SSH-munkamenetből:

    pig
    
  2. Írja be a következő utasításokat a parancssorba 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. A következő sor beírása után a feladatnak el kell indulnia. A feladat befejeződése után a következő adatokhoz hasonló kimenetet ad vissza:

    ((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. A használatával quit kiléphet a Grunt-rendszerhéjból, majd az alábbi paranccsal szerkesztheti a pigudf.py fájlt a helyi fájlrendszerben:

    nano pigudf.py
    
  5. A szerkesztőben a következő sor kibontásával távolítsa el a # karaktert a sor elejéről:

    #from pig_util import outputSchema
    

    Ez a sor úgy módosítja a Python-szkriptet, hogy Jython helyett c Pythont használjon. A módosítás után a Ctrl+X billentyűkombinációval lépjen ki a szerkesztőből. A módosítások mentéséhez válassza az Y, majd az Enter lehetőséget .

  6. pig A parancs használatával indítsa újra a rendszerhéjat. Miután a parancssorba grunt> lép, az alábbi paranccsal futtassa a Python-szkriptet a C Python-értelmezővel.

    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;
    

    A feladat befejeződése után ugyanazt a kimenetet kell látnia, mint amikor korábban a szkriptet a Jython használatával futtatta.

Fájl feltöltése (PowerShell)

A PowerShell a Hive-lekérdezések távoli futtatására is használható. Győződjön meg arról, hogy a munkakönyvtár a helyén pigudf.py van. A szkriptet használó Hive-lekérdezések futtatásához használja a pigudf.py következő PowerShell-szkriptet:

# 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

Pig UDF használata (PowerShell)

Megjegyzés

Ha távolról küld el feladatokat a PowerShell használatával, a C Python nem használható értelmezőként.

A PowerShell a Pig Latin-feladatok futtatására is használható. A szkriptet használó pigudf.py Pig Latin-feladat futtatásához használja a következő PowerShell-szkriptet:

# 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

A Pig-feladat kimenetének a következő adatokhoz hasonlóan kell megjelennie:

((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))

Hibaelhárítás

Feladatok futtatásakor előforduló hibák

A hive-feladat futtatásakor a következő szöveghez hasonló hibaüzenet jelenhet meg:

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.

Ezt a problémát a Python-fájlban lévő sorvégződések okozhatják. Sok Windows-szerkesztő alapértelmezés szerint a CRLF-et használja sorvégként, de a Linux-alkalmazások általában az LF-t várják.

A következő PowerShell-utasítások használatával eltávolíthatja a CR-karaktereket, mielőtt feltöltené a fájlt a HDInsightba:

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

# Wait for completion or failure of specified job

PowerShell-parancsprogramok

A példák futtatásához használt PowerShell-példaszkriptek mindegyike tartalmaz egy megjegyzéssel rendelkező sort, amely a feladat hibakimenetét jeleníti meg. Ha nem látja a feladat várt kimenetét, bontsa ki a következő sort, és ellenőrizze, hogy a hibainformációk problémát jeleznek-e.

$activity="Pig job"

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

A rendszer a hibainformációkat (STDERR) és a feladat eredményét (STDOUT) is naplózza a HDInsight-tárolóba.

Ehhez a feladathoz... Tekintse meg ezeket a fájlokat a blobtárolóban
Hive /HivePython/stderr

/HivePython/stdout

Pig /PigPython/stderr

/PigPython/stdout

Következő lépések

Ha olyan Python-modulokat kell betöltenie, amelyek alapértelmezés szerint nincsenek megadva, olvassa el a Modul üzembe helyezése az Azure HDInsightban című témakört.

A Pig, a Hive és a MapReduce használatának egyéb módjaiért tekintse meg az alábbi dokumentumokat: