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

ExploratoryサーバーにODBCドライバーをインストールするには、デフォルトのR実行環境のDockerイメージを元に、ODBCドライバーの入ったDockerイメージを作成して使用します。このドキュメントではその手順を説明します。

1. デフォルトのr-exploratory DockerイメージからDockerコンテナを起動する

以下のコマンドで、デフォルトのr-exploratory Dockerイメージをベースに、Dockerコンテナを起動します。 この例では、Exploratoryサーバーのバージョンは6.12.3.6を前提として説明しますが、サーバーのバージョンが違う場合は、コマンド内のバージョン番号を適宜置き換えてください。

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

上のコマンドを実行すると、Dockerコンテナ内で実行されるシェルが表示されます。

2. Dockerコンテナ上で、ODBCドライバーをインストールする

シェル上から、ODBCドライバーをインスールします。ここでは、Amazon Redshift ODBC ドライバー バージョン2.0.0.1の例を紹介します。

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

以下のコマンドを実行して、ODBCドライバーをダウンロードしてインストールします。

curl -O https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.1/AmazonRedshiftODBC-64-bit-2.0.0.1.x86_64.rpm && alien -i AmazonRedshiftODBC-64-bit-2.0.0.1.x86_64.rpm

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

設定ファイルを編集するために、テキストエディタをインストールします。ここでは、Vimのインストール方法を紹介します。

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

ODBC設定ファイルを編集する

以下のコマンドを実行して、ODBCの設定ファイルの場所を調べます。

odbcinst -j

出力例は以下のとおりです。/etc/odbcinst.iniが設定ファイル、ということがわかります。

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ドライバーを追加します。ここでは、/opt/amazon/redshiftodbcx64に追加されたRedshiftのドライバーを追加します。

先程インストールしたエディタを利用して、/etc/odbcinst.iniを編集します。Vimを使って編集するには、以下のコマンドを実行します。

vim /etc/odbcinst.ini

ファイルの最後尾に移動して、以下のセクションを追加します。

[Amazon Redshift ODBC Driver (x64)]
Driver=/opt/amazon/redshiftodbcx64/librsodbc64.so
Setup=/opt/amazon/redshiftodbcx64/librsodbc64.so

最終的な /etc/odbcinst.ini は以下のようになります。

3. Dockerコンテナを元に、カスタムのDockerイメージを作成する

ODBCの設定を行ったDockerのコンテナIDを取得します。今作業していたシェルは閉じずに、同じLinuxマシン上でもう一つ別のシェルを起動して、以下のコマンドを実行します。

docker ps

すると、以下のような表が出力されます。

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

表中でIMAGEがr-exploratory:6.12.3.6、COMMANDが"/bin/bash"となっている行が、先程のDockerコンテナを表す行です。この行のCONTAINER IDの値が、必要なコンテナIDです。この例では、aad6f8d956a9がコンテナIDとなります。

こちらのコンテナIDを指定して、コンテナに加えた変更を保持したDockerイメージを作成します。この例では、この新しいDockerイメージのバージョンを6.12.3.6.1 としています。

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

4. 作成したカスタムDockerイメージに加えた変更を確認

作成したDockerイメージを元にDockerコンテナを起動して、変更がうまく追加されているか確認します。

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

表示されるシェル内でRを起動します。

R

Rの中で、 odbc::odbcListDrivers() というコマンドを実行して、RedshiftのODBCドライバーが追加されていることを確認します。

> odbc::odbcListDrivers()
                                name        attribute
1                    PostgreSQL ANSI      Description
2                    PostgreSQL ANSI           Driver
3                    PostgreSQL ANSI            Setup
4                    PostgreSQL ANSI            Debug
5                    PostgreSQL ANSI          CommLog
6                    PostgreSQL ANSI       UsageCount
7                 PostgreSQL Unicode      Description
8                 PostgreSQL Unicode           Driver
9                 PostgreSQL Unicode            Setup
10                PostgreSQL Unicode            Debug
11                PostgreSQL Unicode          CommLog
12                PostgreSQL Unicode       UsageCount
13     ODBC Driver 18 for SQL Server      Description
14     ODBC Driver 18 for SQL Server           Driver
15     ODBC Driver 18 for SQL Server       UsageCount
16               SnowflakeDSIIDriver         APILevel
17               SnowflakeDSIIDriver ConnectFunctions
18               SnowflakeDSIIDriver      Description
19               SnowflakeDSIIDriver           Driver
20               SnowflakeDSIIDriver    DriverODBCVer
21               SnowflakeDSIIDriver         SQLLevel
22 Amazon Redshift ODBC Driver (x64)           Driver
23 Amazon Redshift ODBC Driver (x64)            Setup
                                                       value
1                      PostgreSQL ODBC driver (ANSI version)
2                                               psqlodbca.so
3                                            libodbcpsqlS.so
4                                                          0
5                                                          1
6                                                          1
7                   PostgreSQL ODBC driver (Unicode version)
8                                               psqlodbcw.so
9                                            libodbcpsqlS.so
10                                                         0
11                                                         1
12                                                         1
13                   Microsoft ODBC Driver 18 for SQL Server
14 /opt/microsoft/msodbcsql18/lib64/libmsodbcsql-18.1.so.2.1
15                                                         1
16                                                         1
17                                                       YYY
18                                            Snowflake DSII
19             /usr/lib64/snowflake/odbc/lib/libSnowflake.so
20                                                     03.52
21                                                         1
22                /opt/amazon/redshiftodbcx64/librsodbc64.so
23                /opt/amazon/redshiftodbcx64/librsodbc64.so

5. カスタムのr-exploratory DockerイメージをExploratoryサーバーから使用する

docker-compose.ymlファイルをエディタで開いて、以下のようにr-exploratory Dockerイメージのバージョンを指定している行を見つけます。

...
  rserve:
    image: r-exploratory:6.12.3.6
...

こちらのバージョンを、作成したカスタムDockerコンテナのもので置き換えます。

...
  rserve:
    image: r-exploratory:6.12.3.6.1
...

これで、Exploratoryサーバーを再起動すれば、変更を入れたRの実行環境がExploratoryサーバー上で使用されるようになります。

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