チュートリアル: 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 データ ソースを作成する方法を示します。
Windows で、 [スタート]>[Windows 管理ツール]>[ODBC データ ソース (32 ビット)/(64 ビット)] の順に移動します。 [ODBC データ ソース アドミニストレーター] ウィンドウが開きます。
[ユーザー DSN] タブで、 [追加] を選択して [データ ソースの新規作成] ウィンドウを開きます。
[Microsoft Hive ODBC Driver] を選択してから、 [完了] を選択して Microsoft Hive ODBC Driver DSN セットアップ ウィンドウを開きます。
次の値を入力または選択します。
プロパティ 説明 データ ソース名 データ ソースに名前を付けます。 ホスト 「 CLUSTERNAME.azurehdinsight.net
」と入力します。 たとえば、myHDICluster.azurehdinsight.net
Port 443 を使用します。 データベース 既定値を使用します。 メカニズム [Microsoft Azure HDInsight Service] を選択します [ユーザー名] HDInsight クラスター ユーザーの HTTP ユーザー名を入力します。 既定のユーザー名は admin
です。Password HDInsight クラスター ユーザーのパスワードを入力します。 [Save Password (Encrypted)]\(パスワードの保存 (暗号化済み)\) チェック ボックスをオンにします。 省略可能: [詳細オプション] を選択します。
パラメーター 説明 ネイティブ クエリの使用 これを選択すると、ODBC ドライバーは TSQL を HiveQL に変換しません。 正しい HiveQL ステートメントを送信していることが 100% 確実な場合にのみ、このオプションを使用します。 SQL Server または Azure SQL Database に接続している場合は、オフのままにします。 ブロック単位でフェッチされた行 大量のレコードをフェッチする場合、このパラメーターを調整してパフォーマンスを最適化する必要がある場合があります。 既定の文字列の列の長さ、バイナリ列の長さ、10 進数の列の桁数 データ型の長さおよび精度は、データが返される方法に影響する可能性があります。 精度が失われたり、切り捨てられたりするために間違った情報が返されます。 [テスト] を選択して、データ ソースをテストします。 データ ソースが正しく構成された場合、テスト結果に "成功" と表示されます。
[OK] を選択して、[テスト] ウィンドウを閉じます。
[OK] を選択して、Microsoft Hive ODBC Driver DSN セットアップ ウィンドウを閉じます。
[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
}
次のコード スニペットでは、上記の関数を使用して、チュートリアルの最初に作成した対話型クエリ クラスターでクエリを実行します。 DATASOURCENAME
を Microsoft 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 対話型クエリ クラスターからデータを取得する方法について説明しました。