FC2ブログ

スポンサーサイト

このエントリーのカテゴリ : スポンサー広告

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

【GAEでMapReduceを使おう!】実装編2:モデルの実装

このエントリーのカテゴリ : 【GAEでMapReduceを使おう!】

【GAEでMapReduceを使おう!】実装編1:追加開発部分で説明した中で、まずはモデルの実装部分を説明します。

【既存部分】
・0:TrainInfo …Java

電車遅延情報の明細データオブジェクト。日、時分、路線などの情報を持っています。
このデータが3万行以上蓄積し、日別集計画面の表示時に毎回Java上に3万レコード分ロードしていたので、OutOfMemoryが発生していました。

@PersistenceCapable(identityType = IdentityType.APPLICATION)
public class TrainInfo {

  // ID(連番)
  @PrimaryKey
  @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
  private Long id;

  // 日付
  @Persistent
  private String infoDate;

  // 時分
  @Persistent
  private String infoTime;

  // 路線名
  @Persistent
  private String trainName;

  // 遅延開始駅
  @Persistent
  private String routeStart;

  // 遅延終了駅
  @Persistent
  private String routeEnd;

  // 状況
  @Persistent
  private String statusText;

  // 備考
  @Persistent
  private String detail;

  // 以下、アクセサ
  public Long getId() {
    return id;
  }

  public void setId(Long id) {
    this.id = id;
  }
 (省略)
}



【新規開発部分】
・1:TrainInfoDateSum …Java

電車遅延情報の日別のサマリデータオブジェクト。日、報告数のみ持っています。
「日」ごとに持たせる集計情報を持たせます。
今回は日別報告数、日別遅延路線数、日別時刻別報告数を持たせることにしました。
他にも「路線」軸のサマリデータオブジェクトもありますが、そちらの説明は割愛します。

@PersistenceCapable(identityType = IdentityType.APPLICATION)
public class TrainInfoDateSum {

  // Mapperで集計結果を格納する時に使う属性名
  public static final String TOTAL_COUNT = "infoDate-totalCount";
  public static final String TRAIN_COUNT = "infoDate-trainCount";
  public static final String HOUR_COUNTS = "infoDate-hourCounts";
  
  // 日付
  @PrimaryKey
  private String infoDate;

  // 報告数集計
  @Persistent
  private int totalCount;

  // 路線数集計
  @Persistent
  private int trainCount;
  
  // 1時間ごとの集計(24時間分)
  @Persistent
  private int[] counts;

  // 以下、アクセサ
  public String getInfoDate() {
    return this.infoDate;
  }

  public void setInfoDate(String infoDate) {
    this.infoDate = infoDate;
  }
 (省略)
}



次は、MapperReducerを実装します。
【GAEでMapReduceを使おう!】実装編3:MapperとReducerの実装



ここで実装したアプリはこちら
 ・日別の報告数と路線数のグラフ
 ・日別時刻別の報告数集計表



バックナンバー
【GAEでMapReduceを使おう!】GAEの制約とMapReduceの活用
【GAEでMapReduceを使おう!】環境準備編
【GAEでMapReduceを使おう!】実装編1:追加開発部分
【GAEでMapReduceを使おう!】実装編2:モデルの実装
【GAEでMapReduceを使おう!】実装編3:MapperとReducerの実装
【GAEでMapReduceを使おう!】実装編4:MapReduce起動サーブレットとweb.xml
【GAEでMapReduceを使おう!】実装編5:cronで日次処理にする
【GAEでMapReduceを使おう!】管理コンソールでMapReduce状況を確認する
【GAEでMapReduceを使おう!】MapReduceを使ってみた感想
【GAEでMapReduceを使おう!】JavaでのShardの増やし方
スポンサーサイト

テーマ : Google関連
ジャンル : コンピュータ

コメントの投稿

非公開コメント

プロフィール

toronic

Author:toronic
IT関係で10年働いたのでそろそろ独立したいと考えているけどなかなか一歩が踏み出しきれないありきたりなプログラマ

カテゴリ
ブックマーク
最新記事
月別アーカイブ
検索フォーム
最新コメント
ブロとも申請フォーム

この人とブロともになる

メールフォーム

名前:
メール:
件名:
本文:

スポンサーリンク
リンク
一攫千金?
RSSリンクの表示
QRコード
QRコード
    助成金
    上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。