はじめに

Verticaには、以下のようなHadoopと連携する機能が実装されています。
・HDFSコネクタ:HDFS上のファイルをVerticaに簡単にロード
・External Table:VerticaにロードすることなくHDFS上のファイルをSQLで検索
・HCatalogコネクタ:Hiveで作成したスキーマをVerticaから参照可能



今回はHDFS上のデータをVerticaのテーブルに直接ロードする方法を紹介します。

HDFS上のデータをVerticaにロードすることで、通常のVerticaのテーブルとして検索することが可能になりますので、Hadoop内での検索に比べ高速なパフォーマンスが期待できます。


HDFS上のデータをVerticaのテーブルにロードする

以下の手順にてHDFS上のデータをVerticaのテーブルにロードすることができます。

1.Hadoopの設定ファイルをVerticaサーバにコピーする
2.HDFS内のファイルをロードするためのテーブルをVertica上で作成する
3.COPYコマンドでHDFS内のファイルデータをVerticaのテーブルへロードする

各手順の詳細を以下で説明します。

Hadoopの設定ファイルをVerticaサーバにコピーする

VerticaからHDFS上のデータアクセスは、Verticaサーバ上に存在するHadoop設定ファイルを経由して行います。 そのためVerticaとHDFSが別クラスタに存在する場合、Hadoopの設定ファイルをVerticaサーバにコピーする必要があります。連携に必要なHadoop設定ファイルは以下のとおりです。

・core-site.xml
・hdfs-site.xml

VerticaはHDFS上のデータにアクセスする際、上記ファイル内の特定のプロパティを読み込んでいます。
読み込んでいるプロパティの詳細等については、以下のマニュアルをご参照ください。

Configuring the hdfs Scheme
https://my.vertica.com/docs/8.1.x/HTML/index.htm#Authoring/HadoopIntegrationGuide/libhdfs/ConfiguringAccessToHDFS.htm


また、Verticaはデフォルトで/etc/hadoop/conf ディレクトリ上にあるHadoop設定ファイルを読み込みます。
デフォルト以外のディレクトリに存在するHadoop設定ファイルを読み込ませたい場合、別途データベースパラメータを変更する必要があります。Hadoopに関するデータベースパラメータの詳細については、以下のマニュアルをご参照ください。

Hadoop Parameters
https://my.vertica.com/docs/8.1.x/HTML/index.htm#Authoring/AdministratorsGuide/ConfiguringTheDB/HadoopParameters.htm

今回はVerticaサーバ上に作成した /etc/hadoop/confディレクトリにHadoop設定ファイルを配置します。


HDFS内のファイルをロードするためのテーブルをVertica上で作成する


一般的なテーブルと同様にCREATE TABLE文で作成します



COPYコマンドでHDFS内のファイルデータをVerticaのテーブルへロードする


HDFS内のデータをロードする際は、URL接頭辞に「hdfs:///」を指定します。この指定によりVerticaは事前に配置しているHadoop設定ファイルの情報を読み込みHDFS上のデータにアクセスします。以下の例ではHadoop上の「/tmp/test.txt」ファイルのデータを「hdfs_table01」テーブルにロードしています。


データがロードされていることを確認します。


このように普通にCSVファイルをロードする手順と同様の手順で簡単にHadoop内のデータをVerticaのテーブルにロードすることができます。

参考情報

データロードのまとめ記事
http://vertica-tech.ashisuto.co.jp/load-summary/

検証バージョンについて

この記事の内容はVertica 8.1で確認しています。