■Hiveとは
Hadoop上のHDFSのデータにSQLを使ってアクセスできるクライアントツールです「hadoop fs」等なかなかに扱いにくHDFSアクセス用のコマンドをSQLでできるようにしようというコンセプト
insert、selectなど作は全てhadoop上でMapReduceアルゴリズムに基づき動作する
■事前
https://cwiki.apache.org/confluence/display/Hive/GettingStartedJavaの1.6以上とHadoopの0.2以上が必要です
インストールがまだの方は、以下の記事を参考にインストールしてください
Hadoopインストール方法:
http://kakakikikeke.blogspot.com/2012/08/centos56hadoop.html
http://kakakikikeke.blogspot.com/2012/08/hadoop.html
Javaインストール方法:
http://kakakikikeke.blogspot.com/2012/06/centosjenkinsjavatomcatantgit.html
■インストール
wget http://ftp.tsukuba.wide.ad.jp/software/apache/hive/hive-0.9.0/hive-0.9.0.tar.gztar xvf hive-0.9.0.tar.gz
mv hive-0.9.0 hive
mv hive /usr/local/
emacs .bashrc
HIVE_HOME=/usr/local/hiveを設定します
PATH=$HIVE_HOME/bin:$PATHを追加します
cd /usr/local/hive/mkdir logs
cd /usr/local/hive/conf
mv hive-log4j.properties.template log4j.properties
ログの出力先をhive.log.dir=/usr/local/hive/logs/に変更しました
mv hive-env.sh.template hive-env.shchmod 755 hive-env.sh
mv hive-exec-log4j.properties hive-exec-log4j.properties
mv hive-default.xml.template hive-site.xml
ログは/usr/local/hive/logs配下に保存されますが、セッション情報などは/tmp/rootに保存されています(rootユーザで実行した場合)
■実行
start-all.sh(最低でも擬似分散で動作するhadoop環境が必要です)hive
hive>show databases;
OK
default
Time taken: 6.06 seconds
hive> CREATE TABLE counter (count int, str string) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';default
Time taken: 6.06 seconds
hive> LOAD DATA LOCAL INPATH '/var/tmp/test.txt' OVERWRITE INTO TABLE counter;
ここで指定しているファイルはローカルファイルです(HDFS上にあるファイルも指定できますが、うまくinsertできませんでした・・・)
あらかじめTSV形式のtest.txtを作成しておいてください
なぜTSVかというとテーブルの定義で「このテーブルはtsv形式ですよ」と宣言しているためです
hive> SELECT * FROM counter;あらかじめTSV形式のtest.txtを作成しておいてください
なぜTSVかというとテーブルの定義で「このテーブルはtsv形式ですよ」と宣言しているためです
TSVファイルに書かれている値がインサートされていることがわかると思います
ここで実行してインサートされたデータはファイルとして~/metastore_db配下に保存されます
どうやらApache Derbyが内部的に動作しているようです
ここで実行してインサートされたデータはファイルとして~/metastore_db配下に保存されます
どうやらApache Derbyが内部的に動作しているようです
■考察
実際に使用するときの流れとしては- hadoop上で解析(頑張ってMapReduceを実装)
- 結果の出力ファイルをHDFS上からローカルのある形式で持ってくる(今回はTSV形式)
- Hiveを使用してテーブルにインサート
- あとはSELECTをうまく使用して結果を取得解析
あとはいきなりHiveでデータを突っ込んでSQLで頑張るかですかね・・・
■参考
https://cwiki.apache.org/Hive/hiveclient.htmlJavaからHiveを利用できるクライアントもあるようです
http://wiki.pentaho.com/display/BAD/Loading+Data+into+Hive
0 件のコメント:
コメントを投稿