非パッケージ化 JDBC ドライバを使用するように Looker を構成する
Looker でサポートされている言語の一部については、ライセンス関連の理由により JDBC ドライバを Looker JAR ファイルにパッケージ化できません。このような場合には、JDBC ドライバを Looker サーバーにインストールしてから、このページの説明に沿ってパッケージ化されていないドライバを登録するように Looker を構成する必要があります。
次の表に、パッケージされていない JDBC ドライバのインストールが必要な言語を示します。
前提条件
Looker をパッケージ化されていない JDBC ドライバを必要とするデータベースに接続するには、以下が必要です。
- Looker サーバーへのコマンドライン アクセス。
- JAR ファイルとしての JDBC ドライバ。言語固有のドキュメントには、このファイルのダウンロード方法が記載されています。それ以外の場合は、必要な JAR ファイルにアクセスできることを前提としています。
- 言語のドライバ シンボル。ドライバ シンボルは、Looker が内部でドライバの言語とマッチングするために使用する文字列値です。このページの例では、一般的な値
driver_symbol
を使用しています。Looker が言語に登録するために使用するシンボルについては、このページのドライバ シンボルのリストをご覧ください。 - 言語の言語の YAML のドライバ エントリを
custom_jdbc_config.yml
構成ファイルに追加します。詳細については、このページの YAML 構成ファイルのドライバ エントリをご覧ください。
YAML 構成ファイルのドライバ エントリ
custom_jdbc_config.yml
ファイル内のドライバ エントリの例を以下に示します。
- name: driver_symbol
dir_name: driver_symbol
module_path: com.dialect.jdbc.DialectDriver
override_jdbc_url_subprotocol: driver_subprotocol # optional
言語のドライバ エントリを記述する場合:
- ファイル
custom_jdbc_config.yml
は YAML ベースです。つまり、インデントとスペースは重要です。 name
属性とdir_name
属性は、JDBC ドライバの登録時に Looker が方言するドライバ シンボルにする必要があります。custom_jdbc_drivers
から JDBC ドライバの JAR ファイルへの相対パスを含むdir_name
の代わりに、属性file_name
を使用できます。dir_name
が推奨されるのは、複数のドライバを独自のディレクトリに隔離して、Java クラスが競合する可能性を減らすためです。module_path
プロパティは、特定の JDBC ドライバによって異なります。Java ドライバクラスへの完全修飾パスを指定する必要があります。この例では一般的な値を使用していますが、ドライバが使用する特定のmodule_path
を見つけるには、ドライバクラスの登録方法に関するドキュメントをご覧ください。override_jdbc_url_subprotocol
は、Looker がデータベースに送信する JDBC 文字列で使用されるサブプロトコルをオーバーライドするオプションの引数です。一般的な JDBC 文字列は次のようになります。
jdbc:mysql://localhost:3306/database_name[?propertyName1][=propertyValue1]
ここで、mysql
は、使用されている JDBC サブプロトコルです。
override_jdbc_url_subprotocol: driver_subprotocol
を指定すると、この JDBC 文字列は次のようになります。
jdbc:driver_subprotocol://localhost:3306/database_name[?propertyName1][=propertyValue1]
このオプションは、Looker のデフォルト URL サブプロトコル以外の URL サブプロトコルを必要とする、パッケージ化されていない JDBC ドライバを使用する必要がある場合に必要です。ほとんどの場合、この措置は、方言のドキュメントで明示的に必要とされない限り不要です。MongoBI は、このオプションが必要な言語の例です。
パッケージ化されていない JDBC ドライバのインストール
Looker アプリケーションのベース ディレクトリに移動します。このドキュメントでは
looker
とします。cd looker
custom_jdbc_drivers
という名前のディレクトリを作成します。これは、パッケージ化されていないすべての JDBC ドライバ インストールの最上位ディレクトリです。このディレクトリへのパスはlooker/custom_jdbc_drivers
にする必要がありますmkdir custom_jdbc_drivers
custom_jdbc_drivers
ディレクトリに、ダイアレクトのドライバ シンボルという名前のサブディレクトリを作成します。この例では、汎用値driver_symbol
を使用します。ディレクトリへのパスはlooker/custom_jdbc_drivers/driver_symbol
のようになります。cd custom_jdbc_drivers mkdir driver_symbol
言語の JDBC ドライバ ファイルをこのディレクトリに配置します。この方法は、言語のドライバを見つけてサーバーにアップロードする場所によって異なりますが、関連する JAR ファイルは
driver_symbol
ディレクトリ内にあることを確認してください。looker/custom_jdbc_drivers/driver_symbol/
例:looker/custom_jdbc_drivers/driver_symbol/DialectDriver.jar
必要なファイルを Looker サーバーに移動する方法は、ドライバ ファイルの入手場所とファイル転送の設定によって異なります。このディレクトリにファイルを転送するコマンドの例は、
wget
、scp
、curl
などです。Looker アプリケーション ディレクトリに戻り、
custom_jdbc_config.yml
という名前の構成ファイルを作成します。このファイルのパスはlooker/custom_jdbc_config.yml
です。このファイルには、Looker がカスタム JDBC ドライバを見つけて登録する際に必要な情報が含まれています。cd looker vim custom_jdbc_config.yml
言語の新しいエントリを
custom_jdbc_config.yml
構成ファイルに追加します。ドライバのエントリについては、このページの YAML 構成ファイルのドライバのエントリ セクションをご覧ください。- name: driver_symbol dir_name: driver_symbol module_path: com.dialect.jdbc.DialectDriver
Looker アプリケーションが起動してパッケージ化されていない JDBC ドライバ構成が開始するように、ファイル
lookerstart.cfg
を作成または更新します。このファイルのパスはlooker/lookerstart.cfg
です。オプション--use-custom-jdbc-config
を追加します。他のオプションがある場合は、Looker 起動オプションの末尾に以下の内容を追加します。LOOKERARGS="--use-custom-jdbc-config"
LOOKERARGS
をlookerstart.cfg
以外の場所(環境変数など)に設定している場合は、そこにこの起動フラグを追加できます。または、LOOKERARGS="${LOOKERARGS} --use-custom-jdbc-config"
を設定して、既存の値がこのファイルに展開されるようにすることもできます。Looker アプリケーションを再起動します。このコマンドでは、Looker の起動スクリプトの名前(
./looker
、./looker.sh
など)を使用します。./looker restart
または
none ./looker stop ./looker start
パッケージ化されていない複数の JDBC ドライバ
パッケージ化されていない JDBC ドライバを使用するために複数の言語を構成する必要がある場合は、上記のプロセスが適用されます。custom_jdbc_drivers
ディレクトリには、独自のドライバ JAR を持つ複数の dialect
サブディレクトリがあり、custom_jdbc_config.yml
ファイルには複数のエントリがあります。
ls looker/custom_jdbc_drivers
driver_symbol_1 driver_symbol_2
ls looker/custom_jdbc_drivers/driver_symbol_1
Dialect1Driver.jar
- name: driver_symbol_1
dir_name: driver_symbol_1
module_path: com.dialect.jdbc.Dialect1Driver
- name: driver_symbol_2
dir_name: driver_symbol_2
module_path: com.dialect.jdbc.Dialect2Driver