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>