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
- Hadoop-fürt a HDInsighton. Lásd: A HDInsight használatának első lépései Linux rendszeren.
- Egy SSH-ügyfél. További információért lásd: Csatlakozás a HDInsighthoz (Apache Hadoop) SSH-val.
- A fürtök elsődleges tárolójának URI-sémája . Ez az Azure Storage esetében,
abfs://
Azure Data Lake Storage Gen2 vagy adl:// Azure Data Lake Storage Gen1 esetén.wasb://
Ha engedélyezve van a biztonságos átvitel az Azure Storage-ban, az URI wasbs:// lesz. Lásd még: biztonságos átvitel. - A tárolókonfiguráció lehetséges módosítása. Ha tárfióktípust
BlobStorage
használ, tekintse meg a Tárkonfiguráció című témakört. - Választható. Ha a PowerShell használatát tervezi, telepítenie kell az AZ modult .
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 /tezstaging
a kimenetét állítja elő. Az alapértelmezett hadoop-konfiguráció a fs.azure.page.blob.dir
szolgáltatás HDFS
konfigurá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ő:
- A
add file
fájl elején található utasítás hozzáadja ahiveudf.py
fájlt az elosztott gyorsítótárhoz, így a fürt összes csomópontja számára elérhető. - A
SELECT TRANSFORM ... USING
utasítás kiválasztja az adatokat ahivesampletable
elemből. A clientid, devicemake és devicemodel értékeket is átadja ahiveudf.py
szkriptnek. - A
AS
záradék a visszaadott mezőkethiveudf.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:
- Beolvas egy adatsort az STDIN-ből.
- A záró newline karakter a paranccsal
string.strip(line, "\n ")
lesz eltávolítva. - 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. - 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()])
. - A
while
hurok addig ismétlődik, amíg nemline
lesz beolvasva.
A szkript kimenete a és devicemodel
a 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.
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:
SSH használatával csatlakozzon a fürthöz. Szerkessze és írja be a parancsot:
ssh sshuser@mycluster-ssh.azurehdinsight.net
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
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.
Í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;
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
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ő:
- Az első sor betölti a mintaadatfájlt a fájlba
LOGS
.sample.log
Emellett az egyes rekordokat is definiálja.chararray
- A következő sor kiszűri a null értékeket, és a művelet eredményét a következőbe
LOG
tárolja: . - Ezután iterálja a rekordokat
LOG
, és a metódus meghívására használjaGENERATE
acreate_structure
Python/Jython szkriptben található metódustmyfuncs
.LINE
az aktuális rekordnak a függvénynek való átadására szolgál. - 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.
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
Ezután a
def create_structure(input)
definiálja azt a függvényt, amelybe a Pig továbbítja a sorelemeket.A példaadatok többnyire
sample.log
megfelelnek 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. Aif
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.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
ésdetail
.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.
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:
A fürthöz való csatlakozáshoz használja az SSH-t. Szerkessze és írja be a parancsot:
ssh sshuser@mycluster-ssh.azurehdinsight.net
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)
A pighez való csatlakozáshoz használja a következő parancsot a megnyitott SSH-munkamenetből:
pig
Í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;
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))
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
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 .
pig
A parancs használatával indítsa újra a rendszerhéjat. Miután a parancssorbagrunt>
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: