Groups keyboard shortcuts have been updated
Dismiss
See shortcuts

処理したレコード件数の取得方法について

60 views
Skip to first unread message

mobarex

unread,
Feb 5, 2013, 4:27:25 AM2/5/13
to us...@asakusafw.com
はじめまして
お世話になります。

Asakusa Frameworkで
処理したレコードの件数を取得して、
最終的には標準出力(Logger使って)したいです。
ご教授のほどよろしくお願いします。

現時点の0.5.0で以下のようプログラムが可能でしょうか?
        // XXXXXOperator
        private final SE0Model rec      = new SE0Model();
        private final SE1Model temp     = new SE1Model();
        @CoGroup
        public void convertTable(
                @Key(group = {}) List<SE0Model> inDataList,
                Result<SE1Model> outDataList) {

                rec.copyFrom(inDataList.get(0));
                
                // 特定のフラグが立っていた時にテーブル変換実施。
                if (rec.getXXXX() == NN && some... ) {
                    temp.setShohin(rec.getShohin());
                    temp.setPatNo(rec.getPatNo());
                    temp.setJan(rec.getJan());

                    outDataList.add(temp);
                }
        }
        
        
        // ZZZZZJob
        XXXXXOperatorFactory op = new XXXXXOperatorFactory();
        ConvertTable table = op.convertTable(inData);
        outData.add(table.outDataList);
        
        // この辺りで、table.outDataListに入ってきた件数が知りたい。
        // このような感じでリスト全体の件数を取得したい。
        int ProcCount = table.outDataList.getSize(); // これはできません。

ほかのやり方としては、summarize, foldで全件を1つのグループにして
カウントするやり方もあるとは思いますが・・・スマートな方法が知りたいです。

お手数ではございますが、よろしくお願いいたします。

古山慎悟

unread,
Feb 5, 2013, 6:47:55 AM2/5/13
to mobarex, us...@asakusafw.com
mobarexさん、

現時点の0.5.0で以下のようプログラムが可能でしょうか?
ZZZZZJobの実装が意図すると思われることを実現することはできません。


ほかのやり方としては、summarize, foldで全件を1つのグループにして
カウントするやり方もあるとは思いますが・・・スマートな方法が知りたいです。
今のところ全件を一つのグループにする以外の手段はないので、
summarizeを使用する事になります。


最終的には標準出力(Logger使って)したいです。
本題とは関係ありませんが、Logging演算子をつかってログを出力することができます。
Logging演算子については下記のドキュメントを参照してください。


なお、Logging演算子を使用する場合、標準出力にログが出力されるかどうかについてはHadoop側の設定によります。

古山


2013年2月5日 18:27 mobarex <mob...@gmail.com>:

--
このメールは Google グループのグループ「Asakusa Frameworkメーリングリスト」の登録者に送られています。
このグループから退会し、メールの受信を停止するには、users+un...@asakusafw.com にメールを送信します。
このグループに投稿するには、us...@asakusafw.com にメールを送信してください。
http://groups.google.com/a/asakusafw.com/group/users/?hl=ja からこのグループにアクセスしてください。
その他のオプションについては、https://groups.google.com/a/asakusafw.com/groups/opt_out にアクセスしてください。
 
 

mobarex

unread,
Feb 6, 2013, 3:11:47 AM2/6/13
to us...@asakusafw.com, mobarex
古山さん

返信ありがとうございます。

Asakusaのプログラムを実行してみて、気づいたことですが
ステージ毎に演算子オブジェクトクラスのインスタンス変数名で、
Hadoop側のカウンターを持っています。

このカウンターは、演算子クラスのメソッド内から参照できないでしょうか?

~~やえす上の実行ログ抜粋
13/02/06 16:52:33 INFO mapred.JobClient:  map 100% reduce 0%
13/02/06 16:52:33 INFO mapred.JobClient: Job complete: job_local_0001
13/02/06 16:52:33 INFO mapred.JobClient: Counters: 12
13/02/06 16:52:33 INFO mapred.JobClient:   com.asakusafw.stage.output.RecordCounters
★13/02/06 16:52:33 INFO mapred.JobClient:     outData=8
13/02/06 16:52:33 INFO mapred.JobClient:   FileSystemCounters
13/02/06 16:52:33 INFO mapred.JobClient:     FILE_BYTES_READ=1279347
13/02/06 16:52:33 INFO mapred.JobClient:     FILE_BYTES_WRITTEN=1408138
13/02/06 16:52:33 INFO mapred.JobClient:   Map-Reduce Framework

お手数ではございますが、よろしくお願いいたします
mobarexさん、

このグループから退会し、メールの受信を停止するには、users+unsu...@asakusafw.com にメールを送信します。

古山慎悟

unread,
Feb 6, 2013, 8:31:04 AM2/6/13
to mobarex, us...@asakusafw.com
mobarexさん、

このカウンターは、演算子クラスのメソッド内から参照できないでしょうか?
残念ながらできません。
演算子メソッドはMapReduce Jobの実行順序を意識することができるレイヤではないため、
カウンタにアクセスするようなAPIは論理的に実現困難です。

古山


2013年2月6日 17:11 mobarex <mob...@gmail.com>:
このグループから退会し、メールの受信を停止するには、users+un...@asakusafw.com にメールを送信します。
Reply all
Reply to author
Forward
0 new messages