HueでCSVデータからHiveのテーブルを作る

4日目です。

本日はHadoopアドベントカレンダー2013立候補がいないようなので、あえて書く@choplinさんが今 (22:30)書いて下さっているとのこと。凄い!ありがとうございます!
#決して無理強いはしてないはず、、、、、と信じたい(汗

本日のお題はHueとHiveについてです。

Hiveでテーブルを作成してデータをロードする場合には、1) CREATE TABLEを使用してテーブルを作成し、2) LOAD DATA INPATHなどを使ってデータをロードする、というような手順を踏みます。あるいは、既にデータがHDFS上にある場合、外部テーブルを利用することもできます。 (続きを読む)

祝! Hive 0.12リリース

Hive 0.12もリリース!

Hadoop Worldが近いことは全く関係ないかと思いますが、Hadoop 2.2.0の公開の少し前にHive 0.12も公開されています。

http://hive.apache.org/releases.html#15+October%2C+2013%3A+release+0.12.0+available

あとでチケットを見る予定ですが、一応リンクを、、。

https://issues.apache.org/jira/secure/ReleaseNote.jspa?version=12324312&styleName=Text&projectId=12310843

Hadoopを10分で試す(3)HueからHiveとImpalaのクエリを実行する

**この記事の内容は若干古くなっています。まとめページもご覧下さい**

前回のブログでCloudera Managerを日本語化しましたが、同時にHue (http://gethue.com) というHadoopのGUIツールも日本語化されています。

Hueはオープンソースで提供されている、Hadoop用のGUIツールです。GUIからHive、Pig、Impala、HDFS、MapReduce、Oozie、、などの機能を使用することができる、エンジニア以外の方にも使い易いツールです。(ロゴが可愛いw)
Hue logo

今回はHueのいくつかの機能についてはスクリーンショットを、続いてHueからHiveとImpalaを使ったサンプルクエリを実行してみます。
(全ての画像はクリックすると拡大します)
(続きを読む)

プログラミングHive

プログラミングhive、6/15発売

少し前にレビューのお手伝い(*1)をさせていただいた書籍、オライリーから「プログラミングHive」が出版されます。
http://www.oreilly.co.jp/books/9784873116174/

翻訳は象本や馬本などでおなじみ、読み易さ、安定感抜群の玉川さん。
SQLライクにHadoopを利用したい方、Hiveに興味がある方にはお勧めです。

原書は複数の著者が合作で書いたようで、チャプター毎のサンプルコードに一貫性がありません。
動かないコードなどの間違いは直したつもりですが、原書をお持ちの方はエラータページ(*2)を参考にして下さい。

このような書籍が日本語で読めるのは嬉しい限りです。
同僚含めてレビューや付録も頑張ったので、是非お買い求め下さい(*3)

[*1]もちろんボランティアです
[*2]http://oreilly.com/catalog/errata.csp?isbn=0636920023555
[*3]くどいようですがボランティアです(笑

Hive本のOozie

縁あってHive本 (Programming Hive)をレビューさせていただいています。日本語版が楽しみです。

動作検証をかなり時間をかけていたのですが、動かないクエリが多く、かなり苦戦しました。
O’Reillyのエラータにも報告しました(全部は多すぎるので一部だけ)が、一番難航したのがChapter20のOozie。
動かすまでにかなり手こずったので、フォークして修正したgitのレポジトリと、必要な手順をまとめてgithubに上げました。

Oozieを動かそうと思う方は少ないかもしれませんが、ご参考になれば。
修正版ソース:https://github.com/kawamon/m6d_oozie
ワークアラウンド:https://github.com/kawamon/hive_book/tree/master/ch20

hiveでcogroup

Programming Hiveのレビューをしています(2)

cogroupのサンプル、中途半端にhttps://cwiki.apache.org/Hive/tutorial.html#Tutorial-CoGroupsをコピーして修正しているようんなんだけど、何カ所か中途半端に修正してあって、そのままだと絶対に動かない。

Chapter 14 Calculating Cogroups (CDH4.1.2で検証)
サンプルデータ(cog.txt.1)

1 100 "2013-03-29"
2 102 "2013-03-15"
3 200 "2013-03-11"
4 213 "2013-02-29"
5 134 "2013-01-29"
6 189 "2013-03-30"

サンプルデータ(cog.txt.2)

1 3 "2013-03-19"
2 102 "2013-03-15"
3 200 "2013-03-11"
4 213 "2013-02-29"
5 8 "2013-01-29"
6 21 "2013-03-30"

実行例 (reduce_script は具体例がないので、暫定的に /bin/cat で良いかと。そうじゃないとスクリプトを分散キャッシュで配布しないといけないし)

hive> CREATE TABLE order_log (userid INT, orderid int, ts STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';

hive> CREATE TABLE clicks_log (userid INT, id INT, ts STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';

hive> CREATE TABLE log_analysis (uid INT, id int, reduced_val STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';

hive> load data local inpath 'cog.txt1' INTO TABLE order_log;
hive> load data local inpath 'cog.txt2' INTO TABLE clicks_log;

hive> FROM (
> FROM (
> FROM order_log ol
> -- User Id, order Id, and timestamp:
> SELECT ol.userid AS uid, ol.orderid AS id, ol.ts AS ts
>
> UNION ALL
>
> FROM clicks_log cl
> SELECT cl.userid AS uid, cl.id AS id, cl.ts AS ts
>) union_msgs
>SELECT union_msgs.uid, union_msgs.id, union_msgs.ts
>CLUSTER BY union_msgs.uid, union_msgs.ts) mapout
>INSERT OVERWRITE TABLE log_analysis
>SELECT TRANSFORM(mapout.uid, mapout.id, mapout.ts) USING 'reduce_script' AS (uid, id, >reduced_val);

Hadoop job information for Stage-1: number of mappers: 2; number of reducers: 1
2013-03-30 01:00:49,616 Stage-1 map = 0%, reduce = 0%
2013-03-30 01:00:53,626 Stage-1 map = 50%, reduce = 0%, Cumulative CPU 0.74 sec
2013-03-30 01:00:54,631 Stage-1 map = 100%, reduce = 0%, Cumulative CPU 1.5 sec
2013-03-30 01:00:55,635 Stage-1 map = 100%, reduce = 0%, Cumulative CPU 1.5 sec
2013-03-30 01:00:56,638 Stage-1 map = 100%, reduce = 100%, Cumulative CPU 2.36 sec
2013-03-30 01:00:57,644 Stage-1 map = 100%, reduce = 100%, Cumulative CPU 2.36 sec
MapReduce Total cumulative CPU time: 2 seconds 360 msec
Ended Job = job_201303152339_0086
Loading data to table default.log_analysis
rmr: DEPRECATED: Please use 'rm -r' instead.
Deleted /user/hive/warehouse/log_analysis
12 Rows loaded to log_analysis
MapReduce Jobs Launched:
Job 0: Map: 2 Reduce: 1 Cumulative CPU: 2.36 sec HDFS Read: 0 HDFS Write: 0 SUCCESS
Total MapReduce CPU Time Spent: 2 seconds 360 msec
OK
Time taken: 10.534 seconds
hive> select * from log_analysis;
OK
1 3 "2013-03-19"
1 100 "2013-03-29"
2 102 "2013-03-15"
2 102 "2013-03-15"
3 200 "2013-03-11"
3 200 "2013-03-11"
4 213 "2013-02-29"
4 213 "2013-02-29"
5 8 "2013-01-29"
5 134 "2013-01-29"
6 189 "2013-03-30"
6 21 "2013-03-30"
Time taken: 0.065 seconds
hive>

hiveのGeneralMR

Programming Hiveのレビューをしています

O’ReillyのProgramming Hiveは良本だと思いますが、原書は複数の人が書いているためか、動かないサンプルが多いです。
その中で、GeneralMRではJavaのコードをストリーミングで呼び出すことができます。(通常はHadoop Streamingではスクリプトを使うことが多いでしょうね)
グーグル先生に聞いても情報が少なかったので、手元で動作したサンプルを貼っておきます。

Chapter 14 GenericMR Tools for Streaming to Java (CDH4.1.2で検証)
サンプルデータ(source.txt.3)

1 this
1 that
1 that
1 zxc
1 zxc

実行例

hive> create table source3 (key string, value string) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';
hive> load data local inpath "./source.txt.3" INTO TABLE source3;
hive> FROM (
> FROM source3
> MAP value, key
> USING 'java -cp /usr/lib/hive/lib/hive-contrib-0.9.0-cdh4.1.1.jar >org.apache.hadoop.hive.contrib.mr.example.IdentityMapper'
> AS k, v
> CLUSTER BY k) map_output
>REDUCE k, v
>USING 'java -cp /usr/lib/hive/lib/hive-contrib-0.9.0-cdh4.1.1.jar >org.apache.hadoop.hive.contrib.mr.example.WordCountReduce'
>AS k, v;

2013-03-29 23:45:29,437 Stage-1 map = 0%, reduce = 0%
2013-03-29 23:45:31,444 Stage-1 map = 100%, reduce = 0%, Cumulative CPU 0.65 sec
2013-03-29 23:45:32,449 Stage-1 map = 100%, reduce = 0%, Cumulative CPU 0.65 sec
2013-03-29 23:45:33,454 Stage-1 map = 100%, reduce = 100%, Cumulative CPU 1.33 sec
2013-03-29 23:45:34,457 Stage-1 map = 100%, reduce = 100%, Cumulative CPU 1.33 sec
2013-03-29 23:45:35,460 Stage-1 map = 100%, reduce = 100%, Cumulative CPU 1.33 sec
MapReduce Total cumulative CPU time: 1 seconds 330 msec
Ended Job = job_201303152339_0081
MapReduce Jobs Launched:
Job 0: Map: 1 Reduce: 1 Cumulative CPU: 1.33 sec HDFS Read: 0 HDFS Write: 0 SUCCESS
Total MapReduce CPU Time Spent: 1 seconds 330 msec
OK
that 2
this 1
zxc 2
Time taken: 8.4 seconds
hive>

CDH4におけるHBaseのリージョンサイズ

CDH4ではHBASE-5574が適用されているため、HBaseのリージョンサイズは256MBではなく10GBに変更されています。

(追記)
JIRA
https://issues.apache.org/jira/browse/HBASE-4365
https://issues.apache.org/jira/browse/HBASE-5574

(追記2)2013-06-20
CDH4.2 (HBase 0.94.2) のchanges.logには記載されていないが、CDH4.2のソースに含まれているCHANGES.txtには以下の記載がある。CDH4.1.3には含まれないため、CDH4.2 (0.94以降)で対応ということになる。

[HBASE-4365] - Add a decent heuristic for region size
[HBASE-5574] - DEFAULT_MAX_FILE_SIZE defaults to a negative value

#研修のテキストが更新されていませんでした、、すみません。。。