Apache Hive-lekérdezések futtatása a PowerShell használatával
Ez a dokumentum egy példát mutat be az Apache Hive-lekérdezések HDInsight-fürtön futó Apache Hadoopban való futtatására Azure PowerShell használatával.
Megjegyzés
Ez a dokumentum nem nyújt részletes leírást arról, hogy a példákban használt HiveQL-utasítások mit tesznek. Az ebben a példában használt HiveQL-lel kapcsolatos információkért lásd: Az Apache Hive használata az Apache Hadooppal a HDInsighton.
Előfeltételek
Egy Apache Hadoop-fürt a HDInsighton. Lásd: A HDInsight használatának első lépései Linux rendszeren.
A Telepített PowerShell Az modul .
Hive-lekérdezések futtatása
Azure PowerShell olyan parancsmagokat biztosít, amelyekkel távolról futtathat Hive-lekérdezéseket a HDInsighton. A parancsmagok belsőleg REST-hívásokat intéznek a WebHCathez a HDInsight-fürtön.
A hive-lekérdezések távoli HDInsight-fürtön való futtatásakor a következő parancsmagok használhatók:
-
Connect-AzAccount
: Hitelesíti Azure PowerShell az Azure-előfizetésében. -
New-AzHDInsightHiveJobDefinition
: Létrehoz egy feladatdefiníciót a megadott HiveQL-utasítások használatával. -
Start-AzHDInsightJob
: Elküldi a feladatdefiníciót a HDInsightnak, és elindítja a feladatot. A függvény egy feladatobjektumot ad vissza. -
Wait-AzHDInsightJob
: A feladat objektumával ellenőrzi a feladat állapotát. Megvárja, amíg a feladat befejeződik, vagy túllépi a várakozási időt. -
Get-AzHDInsightJobOutput
: A feladat kimenetének lekérésére szolgál. -
Invoke-AzHDInsightHiveJob
: HiveQL-utasítások futtatására szolgál. Ez a parancsmag blokkolja a lekérdezés befejezését, majd visszaadja az eredményeket. -
Use-AzHDInsightCluster
: Beállítja a parancshoz használni kívánt aktuális fürtötInvoke-AzHDInsightHiveJob
.
Az alábbi lépések bemutatják, hogyan futtathat feladatokat a HDInsight-fürtben ezek a parancsmagok:
Szerkesztő használatával mentse a következő kódot a következőként
hivejob.ps1
: .# Login to your Azure subscription $context = Get-AzContext if ($context -eq $null) { Connect-AzAccount } $context #Get cluster info $clusterName = Read-Host -Prompt "Enter the HDInsight cluster name" $creds=Get-Credential -Message "Enter the login for the cluster" #HiveQL #Note: set hive.execution.engine=tez; is not required for # Linux-based HDInsight $queryString = "set hive.execution.engine=tez;" + "DROP TABLE log4jLogs;" + "CREATE EXTERNAL TABLE log4jLogs(t1 string, t2 string, t3 string, t4 string, t5 string, t6 string, t7 string) ROW FORMAT DELIMITED FIELDS TERMINATED BY ' ' STORED AS TEXTFILE LOCATION 'wasbs:///example/data/';" + "SELECT * FROM log4jLogs WHERE t4 = '[ERROR]';" #Create an HDInsight Hive job definition $hiveJobDefinition = New-AzHDInsightHiveJobDefinition -Query $queryString #Submit the job to the cluster Write-Host "Start the Hive job..." -ForegroundColor Green $hiveJob = Start-AzHDInsightJob -ClusterName $clusterName -JobDefinition $hiveJobDefinition -ClusterCredential $creds #Wait for the Hive job to complete Write-Host "Wait for the job to complete..." -ForegroundColor Green Wait-AzHDInsightJob -ClusterName $clusterName -JobId $hiveJob.JobId -ClusterCredential $creds # Print the output Write-Host "Display the standard output..." -ForegroundColor Green Get-AzHDInsightJobOutput ` -Clustername $clusterName ` -JobId $hiveJob.JobId ` -HttpCredential $creds
Nyisson meg egy új Azure PowerShell parancssort. Módosítsa a könyvtárakat a
hivejob.ps1
fájl helyére, majd futtassa a szkriptet a következő paranccsal:.\hivejob.ps1
A szkript futtatásakor a rendszer kérni fogja, hogy adja meg a fürt nevét és a HTTPS/fürt Rendszergazda fiók hitelesítő adatait. Előfordulhat, hogy a rendszer kérni fogja, hogy jelentkezzen be az Azure-előfizetésbe.
Amikor a feladat befejeződött, a következő szöveghez hasonló információkat ad vissza:
Display the standard output... 2012-02-03 18:35:34 SampleClass0 [ERROR] incorrect id 2012-02-03 18:55:54 SampleClass1 [ERROR] incorrect id 2012-02-03 19:25:27 SampleClass4 [ERROR] incorrect id
Ahogy korábban említettük,
Invoke-Hive
lekérdezés futtatására és a válaszra való várakozásra használható. A Invoke-Hive működésének megtekintéséhez használja a következő szkriptet:# Login to your Azure subscription $context = Get-AzContext if ($context -eq $null) { Connect-AzAccount } $context #Get cluster info $clusterName = Read-Host -Prompt "Enter the HDInsight cluster name" $creds=Get-Credential -Message "Enter the login for the cluster" # Set the cluster to use Use-AzHDInsightCluster -ClusterName $clusterName -HttpCredential $creds $queryString = "set hive.execution.engine=tez;" + "DROP TABLE log4jLogs;" + "CREATE EXTERNAL TABLE log4jLogs(t1 string, t2 string, t3 string, t4 string, t5 string, t6 string, t7 string) ROW FORMAT DELIMITED FIELDS TERMINATED BY ' ' STORED AS TEXTFILE LOCATION '/example/data/';" + "SELECT * FROM log4jLogs WHERE t4 = '[ERROR]';" Invoke-AzHDInsightHiveJob ` -StatusFolder "statusout" ` -Query $queryString
A kimenet a következő szöveghez hasonlóan néz ki:
2012-02-03 18:35:34 SampleClass0 [ERROR] incorrect id 2012-02-03 18:55:54 SampleClass1 [ERROR] incorrect id 2012-02-03 19:25:27 SampleClass4 [ERROR] incorrect id
Megjegyzés
Hosszabb HiveQL-lekérdezésekhez használhatja a Azure PowerShell Here-Strings parancsmagot vagy a HiveQL-szkriptfájlokat. Az alábbi kódrészlet bemutatja, hogyan futtathat HiveQL-szkriptfájlt a
Invoke-Hive
parancsmaggal. A HiveQL-szkriptfájlt fel kell tölteni wasbs://.Invoke-AzHDInsightHiveJob -File "wasbs://<ContainerName>@<StorageAccountName>/<Path>/query.hql"
További információ az Here-Stringsről: HERE-STRINGS.
Hibaelhárítás
Ha a feladat befejezésekor nem ad vissza információt, tekintse meg a hibanaplókat. A feladat hibainformációinak megtekintéséhez adja hozzá a következőt a hivejob.ps1
fájl végéhez, mentse, majd futtassa újra.
# Print the output of the Hive job.
Get-AzHDInsightJobOutput `
-Clustername $clusterName `
-JobId $job.JobId `
-HttpCredential $creds `
-DisplayOutputType StandardError
Ez a parancsmag a feladat feldolgozása során az STDERR-be írt információkat adja vissza.
Összefoglalás
Amint láthatja, a Azure PowerShell egyszerű módot kínál a Hive-lekérdezések HDInsight-fürtön való futtatására, a feladat állapotának figyelésére és a kimenet lekérésére.
Következő lépések
A HIVE-vel kapcsolatos általános információk a HDInsightban:
További információk a Hadoop hdinsight-alapú kezelésének egyéb módjairól: