このページでは、Looker を Apache Hive に接続する方法について説明します。
はじめに
Looker は、JDBC 経由でデータベース サーバーに接続できるように設計されています。Hive の場合、これは Thrift サーバー(HiveServer2)です。詳細については、Apache のドキュメントをご覧ください。
デフォルトでは、このサーバーはポート 10000 でリッスンします。
Looker はインタラクティブなクエリツールです。インタラクティブ SQL エンジンと連携することが想定されています。Hive が MapReduce で実行されている場合(hive.execution.engine
が mr
に設定されている場合)、Hive はクエリ結果をあまりにも遅く返すため実用的ではありません。
Looker は Hive on Tez(hive.execution.engine=tez
)でテストされていますが、Spark 上で Hive に対して Looker を実行することもできます。Spark のサポートは、Hive バージョン 1.1 で追加されました。(Looker は Hive 1.2.1 以降をサポートしています)。
永続的な派生テーブル(PDT)
Hive 接続を使用して Looker で永続的な派生テーブル(PDT)を有効にするには、Looker が使用するスクラッチ スキーマを作成します。looker_scratch
スキーマの作成に使用できるコマンドの例を次に示します。
CREATE SCHEMA looker_scratch;
Looker が Hive への接続に使用するユーザー アカウント(認証を使用しない場合は匿名でもかまいません)には、スクラッチ スキーマで以下のアビリティが必要です。
- テーブルの作成
- テーブルを変更する
- テーブルの削除
Hive で PDT を作成する前に、JDBC クライアントでテストしてください。
キュー
Looker からのクエリを特定のキューに入れる場合は、[Connection Settings] ページの [Additional Params] フィールドにキュー名パラメータを入力します。
?tez.queue.name=the_bi_queue
その他の Hive パラメータは、[Connection Settings] ページの [Additional Params] フィールドで変更できます。
ユーザー属性を使用すると、異なるユーザーまたは異なるユーザー グループからのクエリを、異なるキューに入れることができます。これを行うには、queue_name
のような名前のユーザー属性を作成して、[Additional Params] フィールドに次の行を追加します。
?tez.queue.name={{ _user_attributes['queue_name'] }}
これを使用して、ユーザーごと、またはグループごとに他の hive-site.xml
パラメータをカスタマイズすることもできます。
接続の追加
Looker の [Admin] セクションで [Connections] を選択し、[Add Connection] をクリックします。
接続の詳細を入力します(詳細については、Looker のデータベースへの接続ページをご覧ください)。
- 名前: 接続の名前を指定します。これは、LookML プロジェクトの接続の参照方法です。
言語: Apache Hive 2、Apache Hive 2.3 以降、または Apache Hive 3.1.2 以降のいずれかの言語を指定します。
Apache Hive 3.1.2 以降の場合、Looker は、バージョン 3.1.2 以降の Apache Hive 3 データベースとのみ完全に統合できます。これは、Hive バージョン 2.4.0 ~ 3.1.2 でのクエリ解析の問題により、Looker で生成された SQL の解析時間が極端に長くなったためです。
Host: ホスト名を指定します。
ポート: データベース ポートを指定します。
データベース: データベース名を指定します。
ユーザー名: データベースのユーザー名を指定します。
パスワード: データベース ユーザーのパスワードを指定します。
永続的な派生テーブル: 永続派生テーブルを有効にするには、このチェックボックスをオンにします。この設定により、[Temp Database] フィールドと [PDT Overrides] 列が表示されます。
一時データベース: PDT セクションで作成したスクラッチ スキーマの名前を指定します。
最大 PDT ビルダー接続: この接続で可能な同時 PDT ビルドの数を指定します。この値を大きくしすぎると、クエリ時間に悪影響を及ぼす可能性があります。詳細については、Looker のデータベースへの接続ドキュメント ページをご覧ください。
Additional Params: 追加の JDBC 文字列パラメータを指定します。
PDT とデータグループのメンテナンス スケジュール: Looker でデータグループと永続的な派生テーブルをいつチェックするかを示す
cron
式を指定します。この設定の詳細については、PDT とデータグループのメンテナンス スケジュールのドキュメントをご覧ください。SSL: SSL 接続を使用する場合はチェックボックスをオンにします。
SSL 証明書の検証: ホスト名の検証を行います。
最大接続数: この設定はデフォルト値のままにできます。この設定の詳細については、Looker のデータベースへの接続ドキュメントで最大接続数をご覧ください。
Connection Pool Timeout: 最初はデフォルト値のままにします。この設定の詳細については、Looker のデータベースへの接続に関するドキュメントの接続プールのタイムアウトをご覧ください。
SQL Runner のプリキャッシュ: SQL Runner でテーブル情報をプリロードせず、テーブルが選択されている場合にのみテーブル情報を読み込みないようにするには、このオプションをオフにします。この設定の詳細については、Looker のデータベースへの接続ドキュメント ページの SQL Runner プリキャッシュ セクションをご覧ください。
データベースのタイムゾーン: データベースで使用するタイムゾーンを指定します。タイムゾーンの変換を希望しない場合は、このフィールドを空白のままにします。詳しくは、タイムゾーンの設定の使用に関するドキュメントをご覧ください。
機能のサポート
一部の機能については、Lookerでサポートするには、データベースダイアレクトが同じ機能に対応している必要があります。
Looker の最新リリースでは、Apache Hive 2 が次の Looker 機能をサポートしています。
Looker の最新リリースでは、Apache Hive 2.3 以降が次の Looker 機能をサポートしています。
Looker の最新リリースでは、Apache Hive 3.1.2 以降が次の Looker 機能をサポートしています。
次のステップ
データベースを Looker に接続したら、ユーザーのログイン オプションを構成します。