ひしだまの変更履歴

ひしだまHPの更新履歴。
主にTRPGリプレイの元ネタ集、プログラミング技術メモと自作ソフト、好きなゲームや音楽です。

PigのStorage(LoadFunc/StoreFunc)

2011-08-14 18:20:48 | PG(分散処理)

Pigで独自のファイルを読み書きするStorageクラスを作ってみた。

題材はHiveのSerDeと同じく、WordCountのWritableをデータに持つシーケンスファイルの読み書き。

HiveのSerDeはデータの読み書きの実装方法がけっこう独自な感じだったが、PigのStoreFunc・LoadFuncは素のHadoopのOutputFormat・InputFormatがそのまま出てきている感じ。MapReduceを直に書いたことがある人だったら理解は早そう。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Pigのユーザー定義関数

2011-08-14 15:12:47 | PG(分散処理)

Pigユーザー定義関数を作ってみた。

UDF用のクラスを継承して専用のメソッドをオーバーライドする、正統なJavaプログラムだなぁw
場合によってはデータ型を返すメソッドをオーバーライドする必要がある辺り、Hiveの方が裏で頑張ってくれる感じ。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

PigでWordCount

2011-08-14 04:50:38 | PG(分散処理)

Hiveの次は順当にPigに進みましたよ(笑)

PigはローカルモードならWindowsでも全く問題なく動くのが助かる。

WordCountを試してみたが、ステップ数なら最強(最少)では。

Pigは独自文法だから(覚えるのが面倒そうなので)後回しにしてきたんだけど、実は関数型言語に似ていて非常に分かりやすい。
ついWordCountでScalaと比較してしまったw
たぶん結合とかはScalaには無い文法だけど、基本的な抽出や変換はほんとScala(というかたぶん関数型言語一般のコレクション操作)とそっくり。
Scalaの勉強をしていて良かったよ(笑)

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする