Tutorial: Abfragen von Apache Hive mit ODBC und PowerShell
Microsoft ODBC-Treiber bieten eine flexible Möglichkeit zur Interaktion mit verschiedenen Arten von Datenquellen, einschließlich Apache Hive. Sie können Code in Skriptsprachen wie PowerShell schreiben, die die ODBC-Treiber verwenden, um eine Verbindung mit Ihrem Hive-Cluster herzustellen, eine Abfrage Ihrer Wahl zu übergeben und die Ergebnisse anzuzeigen.
In diesem Tutorial führen Sie die folgenden Aufgaben aus:
- Herunterladen und Installieren des Microsoft Hive ODBC-Treibers
- Erstellen einer ODBC-Datenquelle für Apache Hive, die mit Ihrem Cluster verknüpft ist
- Abfragen von Beispielinformationen aus Ihrem Cluster mit PowerShell
Wenn Sie kein Azure-Abonnement besitzen, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen.
Voraussetzungen
Bevor Sie mit diesem Tutorial beginnen können, benötigen Sie Folgendes:
- Ein Interactive Query-Cluster in HDInsight. Hinweise zum Erstellen finden Sie unter Erste Schritte mit Azure HDInsight. Wählen Sie als Clustertyp Interactive Query aus.
Installieren des Microsoft Hive ODBC-Treibers
Laden Sie den Microsoft Hive ODBC-Treiber herunter, und installieren Sie ihn.
Erstellen einer Apache Hive ODBC-Datenquelle
Die folgenden Schritte zeigen Ihnen, wie Sie eine Apache Hive-ODBC-Datenquelle erstellen.
Navigieren Sie in Windows zu Start>Windows-Verwaltungsprogramme>ODBC-Datenquellen (32-Bit)/(64-Bit) . Das Fenster ODBC-Datenquellen-Administrator wird geöffnet.
Wählen Sie auf der Registerkarte Benutzer-DSN die Option Hinzufügen aus, um das Fenster Neue Datenquelle erstellen zu öffnen.
Wählen Sie Microsoft Hive ODBC-Treiber und dann Fertig stellen aus, um das Fenster DSN-Setup für Microsoft Hive ODBC-Treiber zu öffnen.
Geben Sie folgende Werte ein bzw. wählen diese aus:
Eigenschaft BESCHREIBUNG Datenquellenname Geben Sie einen Namen für die Datenquelle an. Host(s) Geben Sie CLUSTERNAME.azurehdinsight.net
ein. Beispiel:myHDICluster.azurehdinsight.net
Port Verwenden Sie 443. Datenbank Verwenden Sie default. Mechanismus Wählen Sie Microsoft Azure HDInsight Service. Benutzername Geben Sie Ihren HTTP-Benutzernamen für den HDInsight-Cluster an. Der Standardbenutzername lautet admin
.Kennwort Geben Sie Ihr Benutzerkennwort für den HDInsight-Cluster an. Aktivieren Sie das Kontrollkästchen Kennwort speichern (verschlüsselt) . Optional: Wählen Sie Erweiterte Optionen aus.
Parameter BESCHREIBUNG Use Native Query Wenn diese Option ausgewählt ist, versucht der ODBC-Treiber NICHT, TSQL in HiveQL zu konvertieren. Verwenden Sie diese Option nur, wenn Sie absolut sicher sind, dass Sie reine HiveQL-Anweisungen übermitteln. Wenn Sie eine Verbindung mit SQL Server oder Azure SQL-Datenbank herstellen, sollten Sie die Option nicht aktivieren. Rows fetched per block Wenn Sie viele Datensätze abrufen, ist es möglicherweise erforderlich, diesen Parameter zu optimieren, um optimale Leistung zu garantieren. Default string column length, Binary column length, Decimal column scale Längen und Genauigkeiten der Datentypen können beeinflussen, wie die Daten zurückgegeben werden. Aufgrund zu geringer Genauigkeit und von Abschneidevorgängen werden falsche Informationen zurückgegeben. Wählen Sie Testen aus, um die Datenquelle zu testen. Wenn die Datenquelle richtig konfiguriert wurde, wird als Testergebnis SUCCESS angezeigt.
Wählen Sie OK aus, um das Testfenster zu schließen.
Wählen Sie OK aus, um das Fenster DSN-Setup für Microsoft Hive ODBC-Treiber zu schließen.
Wählen Sie OK aus, um das Fenster ODBC-Datenquellen-Administrator zu schließen.
Abfragen von Daten mit PowerShell
Das folgende PowerShell-Skript ist eine Funktion, die von ODBC zum Abfragen einer Hive-Clusters verwendet wird.
function Get-ODBC-Data {
param(
[string]$query=$(throw 'query is required.'),
[string]$dsn,
[PSCredential] $cred = (Get-Credential)
)
$conn = New-Object System.Data.Odbc.OdbcConnection
$uname = $cred.UserName
$pswd = (New-Object System.Net.NetworkCredential -ArgumentList "", $cred.Password).Password
$conn.ConnectionString = "DSN=$dsn;Uid=$uname;Pwd=$pswd;"
$conn.open()
$cmd = New-object System.Data.Odbc.OdbcCommand($query,$conn)
$ds = New-Object system.Data.DataSet
(New-Object system.Data.odbc.odbcDataAdapter($cmd)).fill($ds) #| out-null
$conn.close()
$ds.Tables
}
Im folgenden Codeausschnitt wird mit der obigen Funktion eine Abfrage auf den Interactive Query-Cluster angewendet, den Sie zu Beginn des Tutorials angelegt haben. Ersetzen Sie DATASOURCENAME
durch den Datenquellennamen, den Sie auf dem Bildschirm Microsoft Hive ODBC-Treiber – DNS-Setup angegeben haben. Wenn Sie zur Eingabe von Anmeldeinformationen aufgefordert werden, geben Sie den Benutzernamen und das Kennwort entsprechend den Angaben ein, die Sie bei der Erstellung des Clusters unter Benutzername für Clusteranmeldung und Kennwort für Clusteranmeldung eingegeben haben.
$dsn = "DATASOURCENAME"
$query = "select count(distinct clientid) AS total_clients from hivesampletable"
Get-ODBC-Data -query $query -dsn $dsn
Bereinigen von Ressourcen
Löschen Sie die Ressourcengruppe, den HDInsight-Cluster und das Speicherkonto, wenn diese Elemente nicht mehr benötigt werden. Wählen Sie dazu die Ressourcengruppe aus, in der der Cluster erstellt wurde, und klicken Sie auf Löschen.
Nächste Schritte
In diesem Tutorial haben Sie gelernt, wie Sie den Microsoft Hive ODBC-Treiber und PowerShell verwenden, um Daten aus Ihrem Azure HDInsight-Cluster des Typs „Interactive Query“ abzurufen.