Share via


教學課程:使用 ODBC 和 PowerShell 查詢 Apache Hive

Microsoft ODBC 驅動程式提供彈性的方式來與不同資料來源類型 (包括 Apache Hive) 互動。 您可以在 PowerShell 等指令碼語言中撰寫程式碼,這些語言會使用 ODBC 驅動程式來開啟與您 Hive 叢集的連線,然後傳遞您選擇的查詢並顯示結果。

在此教學課程中,您將執行下列工作:

  • 下載並安裝 Microsoft Hive ODBC 驅動程式
  • 建立連結至您叢集的 Apache Hive ODBC 資料來源
  • 使用 PowerShell 從您的叢集中查詢範例資訊

如果您沒有 Azure 訂用帳戶,請在開始前建立免費帳戶

必要條件

開始進行本教學課程之前,您必須具備下列項目:

  • HDInsight 上的互動式查詢叢集。 若要建立,請參閱開始使用 Azure HDInsight。 選擇 [互動式查詢] 作為叢集類型。

安裝 Microsoft Hive ODBC 驅動程式

下載並安裝 Microsoft Hive ODBC 驅動程式

建立 Apache Hive ODBC 資料來源

下列步驟將說明如何建立 Apache Hive ODBC 資料來源。

  1. 從 Windows 中,瀏覽至 [開始]>[Windows 系統管理工具]>[ODBC 資料來源 (32 位元)/(64 位元)]。 [ODBC 資料來源管理員] 視窗會隨即開啟。

    OBDC data source administrator.

  2. 從 [使用者 DSN] 索引標籤,選取 [新增] 以開啟 [建立新資料來源] 視窗。

  3. 選取 [Microsoft Hive ODBC 驅動程式],然後選取 [完成] 以開啟 [Microsoft Hive ODBC 驅動程式 DSN 設定] 視窗。

  4. 輸入或選取下列值:

    屬性 說明
    資料來源名稱 為資料來源指定名稱
    主機 輸入 CLUSTERNAME.azurehdinsight.net。 例如,myHDICluster.azurehdinsight.net
    連接埠 使用 443
    Database 使用預設值
    機制 選取 [Windows Azure HDInsight 服務]
    使用者名稱 輸入 HDInsight 叢集 HTTP 使用者的使用者名稱。 預設的使用者名稱為 admin
    密碼 輸入 HDInsight 叢集使用者的密碼。 選取 [儲存密碼 (加密)] 核取方塊。
  5. 選擇性:選取 [進階選項]

    參數 描述
    使用原生查詢 選取此選項時,ODBC 驅動程式不會嘗試將 TSQL 轉換為 HiveQL。 只有當您 100% 確定要送出純 HiveQL 陳述式時,再使用此選項。 連接到 SQL Server 或 Azure SQL Database 時,您應將它保留為未勾選。
    每個區塊擷取的資料列 在擷取大量記錄時,可能必須調整此參數,以確保最佳效能。
    預設字串資料行長度、二進位資料行長度、十進位資料行小數位數 資料類型的長度和精確度可能會影響傳回資料的方式。 如果失去精確度且發生截斷狀況,會傳回不正確的資訊。

    Advanced DSN configuration options.

  6. 選取 [測試] 以測試資料來源。 正確設定資料來源時,測試結果就會顯示成功

  7. 選取 [確定] 以關閉 [測試] 視窗。

  8. 選取 [確定] 以關閉 [Microsoft Hive ODBC 驅動程式 DSN 設定] 視窗。

  9. 選取 [確定] 以關閉 [ODBC 資料來源管理員] 視窗。

使用 PowerShell 查詢資料

下列 PowerShell 指令碼是 ODBC 用來查詢 Hive 叢集的函式。

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
}

下列程式碼片段會使用上述函數,在本教學課程開頭所建立的互動式查詢叢集上執行查詢。 將 DATASOURCENAME 取代為您在 [Microsoft Hive ODBC 驅動程式 DSN 設定] 畫面上指定的資料來源名稱。 出現提供認證的提示時,請輸入建立叢集時於 [叢集登入使用者名稱] 和 [叢集登入密碼] 下輸入的使用者名稱和密碼。


$dsn = "DATASOURCENAME"

$query = "select count(distinct clientid) AS total_clients from hivesampletable"

Get-ODBC-Data -query $query -dsn $dsn

清除資源

若不再需要,可刪除資源群組、HDInsight 叢集和儲存體帳戶。 若要這樣做,請選取建立叢集所在的資源群組,然後按一下 [刪除]

下一步

在本教學課程中,您已了解如何使用 Microsoft Hive ODBC 驅動程式和 PowerShell,從您的 Azure HDInsight 互動式查詢叢集中擷取資料。