Share via


チュートリアル: ODBC と PowerShell による Apache Hive のクエリの実行

Microsoft ODBC ドライバーでは、Apache Hive などのさまざまな種類のデータ ソースと対話するための柔軟な方法が提供されています。 ODBC ドライバーを使用して Hive クラスターへの接続を開き、ユーザーが選択したクエリを渡して、結果を表示する PowerShell などのスクリプト言語でコードを記述できます。

このチュートリアルでは、以下のタスクを行います。

  • 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 Driver] を選択してから、 [完了] を選択して Microsoft Hive ODBC Driver DSN セットアップ ウィンドウを開きます。

  4. 次の値を入力または選択します。

    プロパティ 説明
    データ ソース名 データ ソースに名前を付けます。
    ホスト CLUSTERNAME.azurehdinsight.net」と入力します。 たとえば、myHDICluster.azurehdinsight.net
    Port 443 を使用します。
    データベース 既定値を使用します。
    メカニズム [Microsoft Azure HDInsight Service] を選択します
    [ユーザー名] HDInsight クラスター ユーザーの HTTP ユーザー名を入力します。 既定のユーザー名は admin です。
    Password HDInsight クラスター ユーザーのパスワードを入力します。 [Save Password (Encrypted)]\(パスワードの保存 (暗号化済み)\) チェック ボックスをオンにします。
  5. 省略可能: [詳細オプション] を選択します。

    パラメーター 説明
    ネイティブ クエリの使用 これを選択すると、ODBC ドライバーは TSQL を HiveQL に変換しません。 正しい HiveQL ステートメントを送信していることが 100% 確実な場合にのみ、このオプションを使用します。 SQL Server または Azure SQL Database に接続している場合は、オフのままにします。
    ブロック単位でフェッチされた行 大量のレコードをフェッチする場合、このパラメーターを調整してパフォーマンスを最適化する必要がある場合があります。
    既定の文字列の列の長さ、バイナリ列の長さ、10 進数の列の桁数 データ型の長さおよび精度は、データが返される方法に影響する可能性があります。 精度が失われたり、切り捨てられたりするために間違った情報が返されます。

    Advanced DSN configuration options.

  6. [テスト] を選択して、データ ソースをテストします。 データ ソースが正しく構成された場合、テスト結果に "成功" と表示されます。

  7. [OK] を選択して、[テスト] ウィンドウを閉じます。

  8. [OK] を選択して、Microsoft Hive ODBC Driver DSN セットアップ ウィンドウを閉じます。

  9. [OK] を選択して、 [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
}

次のコード スニペットでは、上記の関数を使用して、チュートリアルの最初に作成した対話型クエリ クラスターでクエリを実行します。 DATASOURCENAMEMicrosoft Hive ODBC Driver 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 対話型クエリ クラスターからデータを取得する方法について説明しました。