Exploratory サーバーにDenodo ODBCドライバーをインストールする方法

Exploratory サーバーにDenodoのODBCドライバーをインストールするには、Exploratory サーバーのデフォルトR環境DockerイメージをベースにカスタマイズされたDockerイメージを作成します。

1. デフォルトのr-exploratory DockerイメージをベースにDockerコンテナを実行する

次のコマンドを実行して、デフォルトのr-exploratory DockerイメージをベースにDockerコンテナを起動します。この例では、Collaboration Serverバージョン8.3.2のDockerイメージを使用しています。コマンド内のバージョン番号を使用しているものに置き換えてください。

docker run -it r-exploratory:8.3.2 /bin/bash

2. DockerコンテナにDenodo ODBCドライバーをインストールする

開いたシェルで、Exploratory Serverで使用するDenodo ODBCドライバーをインストールします。

ODBCドライバーをダウンロードする

ODBC ドライバーは、Denodo のWebサイトからダウンロードできます。

ODBCドライバーをインストールする

※ 外部ネットワークに接続するためにプロキシサーバーが必要な場合は、事前にターミナルで以下のコマンドを実行してください。(username、password、server、portを実際の値に置き換えてください)

export http_proxy=
http://username:password@server:port/

ODBC ドライバーをファイルサーバーに配置して、Docker内で取得できるようにします。ここにいくつかの例を示します。

curl -O https://<your_file_server>/downloads/denodo-vdp-odbcdriver-8.0-update-20230914-linux.zip

次に、zipファイルを解凍します。

unzip denodo-vdp-odbcdriver-8.0-update-20230914-linux.zip

テキストエディタをインストールする

次のステップとして設定ファイルを更新する必要があるので、以下のようにテキストエディタ(vim)をインストールします。

apt-get -y --no-install-recommends install vim

ODBC ドライバーを ODBC 構成ファイルに追加する。

インストールが完了したら、以下のコマンドを入力します。

odbcinst -j

これにより、次のようにODBC構成ファイルの場所が表示されます。

unixODBC 2.3.6
DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES..: /etc/ODBCDataSources
USER DATA SOURCES..: /root/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8

これにより、/etc/odbcinst.iniがODBCドライバーの設定ファイルであることがわかりました。

この例では、ODBC ドライバーは /denodo-vdp-odbcdriver-linux-8.0.8/ にインストールされているため、エントリを/etc/odbcinst.iniファイルに追加します。

テキストエディタ(Vim)でodbcinst.iniファイルを開きます。

vim /etc/odbcinst.ini

ファイルの最後に以下を追加して保存します。

[DenodoODBCDriver]
Description=ODBC driver for Denodo 8.0
Driver=/denodo-vdp-odbcdriver-linux-8.0.8/denodo-vdp-odbcdriver-linux/lib/unixodbc_x64/denodoodbc.so
UsageCount=1

ドライバーのパスが正しいことを確認してください。ターミナルから以下のコマンドを実行して結果が返されることを確認します。

ls -l /denodo-vdp-odbcdriver-linux-8.0.8/denodo-vdp-odbcdriver-linux/lib/unixodbc_x64/denodoodbc.so

3. ODBCドライバーに含まれるlibcurlを上書きする

ODBCドライバには古いバージョンのlibcurlが含まれているため、Dockerに付属するもので上書きします。

ODBC ドライバーがインストールされているディレクトリに移動する

cd /denodo-vdp-odbcdriver-linux-8.0.8/denodo-vdp-odbcdriver-linux/lib/unixodbc_x64

ODBCドライバに含まれるlibcurl.so.4ファイルをバックアップする

libcurl.so.4.backのファイルを次のようにバックアップします。

mv libcurl.so.4 libcurl.so.4.back

Dockerに含まれるlibcurlへのシンボリックリンクを作成する

ln -s /lib/x86_64-linux-gnu/libcurl.so.4 libcurl.so.4

シンボリックリンクが有効か確認する

次のようにlddを入力し、結果が返されることを確認します。

ldd libcurl.so.4

4. ODBCドライバーの接続をテストする

ターミナルでRを入力し、Rのセッションを開始します。

R

R のコマンドラインインターフェイスで、odbc::odbcListDrivers()を入力し、結果にDenodoODBCDriverのエントリが表示されることを確認します。

> odbc::odbcListDrivers()

Rのコマンドラインインターフェースで、以下のコマンドを入力します。(host、port、username、password、databaseを実際の値に置き換えてください)そして、これがTRUEを返すことを確認してください。

conn <- exploratory::getDBConnection(type='dbiodbc', subType='conn_str_kv', driver = 'DenodoODBCDriver', host = 'host', port=1234, username = 'username', password = ‘password', database = 'database'); DBI::dbIsValid(conn);

5. コンテナをベースにカスタマイズされたDockerイメージを作成する

ホストLinuxマシンで別のシェルを開き、以下のコマンドを実行して、変更を加えたDockerコンテナのIDを見つけます。

docker ps

上記のコマンドにより、次のようなテーブルがアウトプットとして得られるはずです。

CONTAINER ID        IMAGE                    COMMAND         PORTS       
aad6f8d956a9        r-exploratory:8.3.2   "/bin/bash"    6311/tcp     

テーブルからDockerコンテナのContainer IDを見つけます。この場合はaad6f8d956a9です。

IDを使って、変更を加えたDockerイメージを作成します。ここでは、新しいイメージにカスタマイズされたバージョン番号8.3.2.1を付けます。

docker commit  -c 'CMD ["R", "-e", "Rserve::run.Rserve(remote=TRUE)"]' -c 'EXPOSE 6311' aad6f8d956a9 r-exploratory:8.3.2.1

6. 新しいDockerイメージに変更が含まれていることを確認する

作成した新しいDockerイメージでDockerコンテナを起動します。

docker run -it r-exploratory:8.3.2.1 /bin/bash

7. Exploratory サーバーからカスタマイズされたr-exploratory Dockerイメージを使用する

docker-compose.ymlファイル内でr-exploratory DockerコンテナのDockerイメージバージョンを指定した行を見つけます。

...
  rserve:
    image: r-exploratory:8.3.2
...

バージョンを先ほど作成したバージョンに変更します。

...
  rserve:
    image: r-exploratory:8.3.2.1
...

これで、Exploratory サーバーを再起動すると、カスタム変更を加えた新しいR環境を使用して起動するようになります。

Export Chart Image
Output Format
PNG SVG
Background
Set background transparent
Size
Width (Pixel)
Height (Pixel)
Pixel Ratio