Python felhasználó által definiált 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 a HDInsighton
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-ban í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. Tekintse meg a HDInsight linuxos használatának első lépéseit.
- 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,
abfs://
az Azure Data Lake Storage Gen2 vagy az Azure Data Lake Storage Gen1 adl:// esetében érhetőwasb://
el. Ha engedélyezve van a biztonságos átvitel az Azure Storage-ban, az URI wasbs://. Lásd még: biztonságos átvitel. - A tárkonfiguráció lehetséges módosítása. Tárfiók-típus
BlobStorage
használata esetén tekintse meg a tárkonfigurációt. - Opcionális. Ha a PowerShell használatát tervezi, telepítenie kell az AZ modult .
Feljegyzés
A cikkben használt tárfiók az Azure Storage volt, amelyen engedélyezve van a biztonságos átvitel , ezért wasbs
a cikk egészében használják.
Tároló konfigurálása
Nincs szükség műveletre, ha a használt tárfiók fajta Storage (general purpose v1)
vagy StorageV2 (general purpose v2)
. A cikkben szereplő folyamat legalább /tezstaging
a kimenetet á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, amelyek a tárfiók típusa BlobStorage
esetén nem támogatottak. A cikk használatához BlobStorage
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 a következő feltételezéseket teszik:
- A Python-szkripteket a helyi fejlesztési környezetben hozza létre.
- A szkripteket feltöltheti a HDInsightba a
scp
parancs vagy a megadott PowerShell-szkript használatával.
Ha az Azure Cloud Shellt (bash) szeretné használni a HDInsight használatához, akkor a következőt kell tennie:
- Hozza létre a szkripteket a Cloud Shell-környezetben.
- A fájlok a cloud shellből a HDInsightba való feltöltésére használhatók
scp
. - 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ő. - Az
SELECT TRANSFORM ... USING
utasítás kiválasztja az adatokat ahivesampletable
. Emellett átadja a clientid, devicemake és devicemodel értékeket ahiveudf.py
szkriptnek. - A
AS
záradék a visszaadotthiveudf.py
mezőket írja le.
Fájl létrehozása
A fejlesztői környezetben hozzon létre egy 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:
- Adatsort olvas be az STDIN-ből.
- A záró újvonalas karaktert a program eltávolítja a következővel
string.strip(line, "\n ")
: . - A streamfeldolgozás során egyetlen sor tartalmazza az összes értéket, amely az egyes értékek között tabulátorkarakorral rendelkezik. Í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 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 nem olvas be.line
A szkript kimenete az összefűzött érték devicemake
és devicemodel
az összefűzött érték kivonatának összefűzése.
Fájl feltöltése (rendszerhéj)
A következő parancs lecseréli sshuser
a tényleges felhasználónevet, ha eltér. Cserélje le mycluster
a tényleges fürtnévre. Győződjön meg arról, hogy a munkakönyvtárban található a fájl.
A
scp
fájlokat a HDInsight-fürtbe másolhatja. Szerkessze és írja be a parancsot:scp hiveudf.py sshuser@mycluster-ssh.azurehdinsight.net:
Az SSH használatával csatlakozzon a fürthöz. 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árhelyéhez.
hdfs dfs -put hiveudf.py /hiveudf.py
Hive UDF használata (shell)
A Hive-hez 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 kezdődnie. A feladat befejezé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-ból való kilépéshez í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
található. A szkriptet használó Hive-lekérdezések futtatásához használja a hiveudf.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
$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
Feljegyzés
A fájlok feltöltésével kapcsolatos további információkért tekintse meg az Apache Hadoop-feladatok adatainak feltöltését a HDInsight-dokumentumban .
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 a következő 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-szkriptek uDF-ként használhatók a Pigből az GENERATE
utasításon keresztül. A szkriptet Jython vagy C Python használatával is futtathatja.
- A Jython a JVM-en fut, és natív módon meghívható Pigből.
- A C Python egy külső folyamat, ezért a JVM-en lévő Pig adatai a Python-folyamatban futó szkriptbe kerülnek. A Python-szkript kimenete vissza lesz küldve a Pigbe.
A Python-értelmező megadásához használja register
a Python-szkriptre való hivatkozáskor. Az alábbi példák szkripteket regisztrálnak a Pigben a következő módon 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 a Pig-feladat elküldéséhez használt csomópont helyi fájlrendszerében található fájlra.
A korábbi regisztrációt követően a példában szereplő Pig Latin ugyanaz mindkét esetben:
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
LOGS
.sample.log
Az egyes rekordokat is definiáljachararray
. - 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 át a rekordokat
LOG
, és a Python/Jython szkriptben található metódus meghívásáhozcreate_structure
használjaGENERATE
a következőként betöltött metódustmyfuncs
.LINE
az aktuális rekord a függvénynek való átadására szolgál. - Végül a kimenetek az STDOUT-ba kerülnek a
DUMP
parancs használatával. Ez a parancs a művelet befejezése után jeleníti meg az eredményeket.
Fájl létrehozása
A fejlesztői környezetben hozzon létre egy 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 chararray-ként van definiálva, mert nincs konzisztens séma a bemenethez. A Python-szkript konzisztenssé alakítja az adatokat a kimenethez.
Az
@outputSchema
utasítás a Pignek visszaadott adatok formátumát határozza meg. Ebben az esetben ez egy adatcsomag, amely egy Pig adattípus. A zsák a következő mezőket tartalmazza, amelyek mindegyike chararray (sztringek):- dátum – a naplóbejegyzés létrehozásának dátuma
- idő – a naplóbejegyzés létrehozásának időpontja
- classname – a bejegyzés által létrehozott osztálynév
- szint – a naplószint
- detail – részletes részletek a naplóbejegyzéshez
Ezután a
def create_structure(input)
függvény határozza meg, hogy a Pig milyen sorelemeket ad át.A példaadatok
sample.log
többnyire a dátum, az idő, az osztálynév, a szint és a részletek sémájának felelnek meg. Tartalmaz azonban néhány sort, amelyek a kezdőbetűkkel kezdődnek*java.lang.Exception*
. Ezeket a sorokat úgy kell módosítani, hogy megfeleljenek a sémának. Azif
utasítás ellenőrzi azokat, majd masszírozza a bemeneti adatokat a*java.lang.Exception*
sztring végéhez való áthelyezéshez, így az adatok összhangban vannak a várt kimeneti sémával.Ezután a
split
parancs az adatok felosztására szolgál az első négy szóköz karakternél. A kimenet a következőhözdate
van rendelve: ,time
,classname
level
ésdetail
.Végül a rendszer visszaadja az értékeket Pignek.
Amikor az adatok visszakerülnek a Pighez, 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 sshuser
a tényleges felhasználónevet, ha eltér. Cserélje le mycluster
a tényleges fürtnévre. Győződjön meg arról, hogy a munkakönyvtárban található a fájl.
A
scp
fájlokat a HDInsight-fürtbe másolhatja. Szerkessze és írja be a parancsot:scp pigudf.py sshuser@mycluster-ssh.azurehdinsight.net:
Az SSH használatával csatlakozzon a fürthöz. 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árhelyéhez.
hdfs dfs -put pigudf.py /pigudf.py
Pig UDF használata (shell)
A sertéshez való csatlakozáshoz használja a következő parancsot a nyitott 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 kezdődnie. 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
quit
Grunt-rendszerhéjból való kilépéshez, majd a következő használatával 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, a következővel 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 a szkriptet korábban 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
található. 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)
Feljegyzé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
Hibák a feladatok futtatásakor
A hive-feladat futtatásakor az alábbi 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ájl sorvégződései okozhatják. Sok Windows-szerkesztő alapértelmezés szerint a CRLF-et használja sorvégződésként, de a Linux-alkalmazások általában LF-t várnak.
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-szkriptek
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 hibá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 alapértelmezés szerint nem biztosított Python-modulokat kell betöltenie, 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: