Tableau DesktopからAmazon EMRにODBC接続する

TableauがAmazon EMRに対応

少し前ですが、TableauがAmazon EMRに対応したニュースがありました。そこで今回は実際に接続してみたいと思います。

ODBCドライバのセットアップ

TableauからEMRに接続するためには、まず始めにODBCドライバをセットアップします。HiveODBCドライバをダウンロードしてセットアップします。

Use Business Intelligence Tools with Amazon EMR

以下の手順でドライバを登録します。(以下はWindowsの場合)

  • HiveODBC.zipをダウンロードします。
  • AmazonHiveODBC64.msiを実行してODBCドライバーをインストールします。
  • [ODBCデータソース]を開きます。
  • [システムDSN] タブを選択します。
  • [Sample Amazon Hive DSN]という名前で登録されていることを確認します。
  • [構成]を選択してホスト情報をAmazon EMRのIPアドレスにします。
  • [Test]を選択して動作確認をします。

ODBCデータソース

screenshot 2015-08-08 13.08.03

EMRを起動する

Amazon EMRでクラスタを起動してHiveに外部から接続できるように10000ポートを開放しておきます。

Tableauから接続する

Tableau Desktopを起動してAmazon EMRに接続してみましょう。

以下は接続できるデータソースの一覧です。

screenshot 2015-07-30 0.34.39

Amazon EMRを選択します。

screenshot_2015-08-08_13_08_41

  • ポート番号:10000
  • タイプ:HiveServer2
  • 認証:ユーザー名
  • ユーザ名:default

接続できましたので、次にデータを用意しましょう。

Hiveでテーブルを作成する

TableauからHiveに接続するために、EMRにSSHログインしてテーブルを作成しデータを登録します。下準備は以下のブログを参考にしてください。

Amazon EMR 4.0.0で始める Apache Spark 1.4.1

次にHiveを起動してテーブルを作成します。カンマ区切りのCSVをロードしています。

$ hive
> DROP TABLE address;

> CREATE TABLE address
> (zipcode string, prefecture string, city string, address string,
> prefecture_en string, city_en string, address_en string)
> ROW FORMAT DELIMITED FIELDS TERMINATED BY ","
> STORED AS TEXTFILE;

>LOAD DATA LOCAL INPATH 'KEN_ALL_ROME_UTF.CSV' INTO TABLE address;

>SELECT * FROM address WHERE zipcode='9071800'; 
OK
9071800	沖縄県	八重山郡 与那国町	以下に掲載がない場合	OKINAWA KEN	YAEYAMA GUN YONAGUNI CHO	IKANIKEISAIGANAIBAAI
Time taken: 0.967 seconds, Fetched: 1 row(s)

テーブル作成が完了です。

Tableauからデータを表示する

EMRに接続してスキーマとテーブルを指定します。そして、カラム名をドラッグしていつものように表示しましょう。ここで1点注意点があります。表示までに結構遅いです。サーバー側で実行した際は早かったので、データ転送が大量に発生しているかもしれませんね。

screenshot 2015-08-08 15.04.32

まとめ

TableaからAmazon EMRのODBCドライバを用いてHiveに接続しました。様々なツールがつながることで集計や分析の選択肢が広がりますね。次は、SparkSQLにつないでみたいな。

参考資料

Amazon EMR 用の Hive ドライバーをインストール