public static class R1 extends Reducer{ public void reduce(Text key, Iterable values, Context context) throws IOException, InterruptedException { context.write(key, values.iterator().next()); Path path = FileOutputFormat.getWorkOutputPath(context); Path fpath = new Path(path, "sidefile" + key.toString()); OutputStream os = fpath.getFileSystem(context.getConfiguration()).create(fpath); PrintWriter pw = new PrintWriter(new OutputStreamWriter(os)); pw.println("hello"); pw.flush(); pw.close(); os.close(); } }
2011年3月11日金曜日
hadoop side effect file
hadoopではファイルを正式なアウトプットの他に作ることができる。
getWorkOutputPath を使う。ディレクトリは正式なアウトプットの出力先と同じなので注意。
2011年3月9日水曜日
2011年3月8日火曜日
screen
設定
デフォルトだとC-aがエスケープなのだけど、emacsとコンフリクトするのでC-zに設定し直す。下記を~/.screenrc に。escape ^z^z
デタッチ と アタッチ
C-z d でデタッチ。screen -ls で確認すると、セッションが見える。 >|| $ screen -ls There is a screen on: 6398.pts-11.xxxx (Detached) 1 Socket in /var/run/screen/S-xxxx. ||< screen -r でアタッチ。複数のセッションがある場合には先頭のpts番号(この場合は6398)を指定。仮想画面
- C-z c で仮想画面追加
- C-z w で仮想画面のリストを最下段に表示
- C-z 番号 でその番号の仮想画面に移動。
- C-z space で順番に仮想画面を移動。
- C-z n, C-z p で前後に移動。 nはspace と同じ。
コピーモード
screen ではスクロールをscreenが処理してるので端末のスクロールバーが使えない。面倒。 そのかわりコピーモードというのがあってそれで過去のログをみることができる。 C-z [ でコピーモードに入る。エスケープで抜ける。2011年2月4日金曜日
hadoop でjava のserializableを受け渡すには
何らかの方法でシリアライズするわけだが、hadoop はデフォルトではJavaのシリアライズではなく
独自のシリアライザを使うようになっている。これはJavaのシリアライズが重いため、だそうだ。
しかしもちろんシリアライザの実装を変更することができ、Javaのシリアライザを使うように
指定することもできる。それには、こうする。
Configuration conf = new Configuration();
conf.set("io.serializations",
org.apache.hadoop.io.serializer.JavaSerialization.class.getName() + "," +
org.apache.hadoop.io.serializer.WritableSerialization.class.getName());
要するにSerialization クラスをカンマで区切って、
io.serializations にセットするのだけど、JavaSerialization だけだと、Textとかが
デコードできなくなっちゃうので、デフォルトのWritableSerialization も書いておくこと。
2011年1月18日火曜日
mac os JISキーボードをUS配列で
これまで、JISキーボードをUS配列で使うために、
こちらの
JANSIマップというのを使っていた。
これは、キーマップを追加するもので、
日本語入力とUS入力の他にJANSIマップをつかって入力する形になる。
これはこれでいいのだけど、日本語入力では結局JIS配列になるし、気がついたら
USになっていたりして、発狂寸前。
ということで、別の方法を模索したところ、Emacs bind化にもつかえる
KeyRemap4MacBookで出来ることが判明
さらに、スペースとコマンドキーの間にあってウザかった「英数」キーをコマンドキーに変えたので
大変に快適に!
ありがたいことだ。
2010年11月29日月曜日
frameset と bodyタグ
いままで見えていたフレームが見えなくなったので調査。原因はChromeに変えたからだった。
どうも、フレームをbodyタグの中に書いていたのがまずかったらしい。bodyの
中だと無視されてしまうようだ。
Chromeの挙動がたぶん仕様的にはただしいんだろう。
でも、FirefoxでもSafariでも動いちゃうだけに、なんかなあ。
<BODY> <FRAMESET rows="70,100%">> ... </FRAMESET> </BODY>;これだとレンダリングされない
2010年10月21日木曜日
登録:
投稿 (Atom)