FileInputFormatで無視されるPath

多段のMapReduceを書く際に、_SUCCESS などのディレクトリは読み取られずには、次のFileInputFormatから無視されるけど、FileInputFormatは、どんな条件でフィルタをかけているんだろう?と思い確認してみました。

  private static final PathFilter hiddenFileFilter = new PathFilter(){
      public boolean accept(Path p){
        String name = p.getName(); 
        return !name.startsWith("_") && !name.startsWith("."); 
      }
    }; 

"."および"_"から始まるPathは無視されるんですね。

FileOutputFormatを継承した自作OutputFormatでの圧縮

FileOutputFormatを継承して自作のOutputFormatを作る場合、圧縮関連の処理はFileOutputFormatには含まれないので、自分で処理を書く必要がある。

その際、TextInputFormat の getRecordWriterが、シンプルで参考になる。
http://svn.apache.org/viewvc/hadoop/common/branches/branch-1.0/src/mapred/org/apache/hadoop/mapreduce/lib/output/TextOutputFormat.java?view=markup

 public RecordWriter<K, V> 
       getRecordWriter(TaskAttemptContext job
                       ) throws IOException, InterruptedException {
  Configuration conf = job.getConfiguration();
  boolean isCompressed = getCompressOutput(job);
  String keyValueSeparator= conf.get("mapred.textoutputformat.separator",
                                     "\t");
  CompressionCodec codec = null;
  String extension = "";
  if (isCompressed) {
    Class<? extends CompressionCodec> codecClass = 
      getOutputCompressorClass(job, GzipCodec.class);
    codec = (CompressionCodec) ReflectionUtils.newInstance(codecClass, conf);
    extension = codec.getDefaultExtension();
  }
  Path file = getDefaultWorkFile(job, extension);
  FileSystem fs = file.getFileSystem(conf);
  if (!isCompressed) {
    FSDataOutputStream fileOut = fs.create(file, false);
    return new LineRecordWriter<K, V>(fileOut, keyValueSeparator);
  } else {
    FSDataOutputStream fileOut = fs.create(file, false);
    return new LineRecordWriter<K, V>(new DataOutputStream
                                      (codec.createOutputStream(fileOut)),
                                      keyValueSeparator);
  }
}

たいした話ではないが、メモメモ。

scansnapで、快適読書生活

いわゆる「自炊」ってのをはじめました。スキャナで本をとりこんで、電子化するってやつです。

材料

スキャナと裁断機で7万ほどかかりましたが、それでもいい買い物だったと思っています。3時間ほどで十数冊の本を取り込み済み。数ヶ月かけて、自宅の本を半分ほど処分する計画です。GoodReaderを使えばiPhoneでも読めるし、Acrobat Professionalもついていて、OCRしとけば検索もできるんで快適です。

(補足) ScanSnapですが、現時点でSnow Leopardに対応していないようなので、以下のページの設定ファイルを読み込ませる必要がありました。
http://scansnap.fujitsu.com/jp/faq/snowleopard/

Enjoy reading!

オンライン書籍

日本未発売のGadget/Serviceで、ずっと日本でのサービス開始を望んでいるのが、Amazon Kindleです。

デザインが野暮ったい、電子書籍は(天下のソニーパナソニックも含めて)日本で何度も失敗してきた、確かにその通りです。でもここ数年読書環境を、どうにかオンラインに移行できないか考えている私には、どうしてもコイツがほしいのです。

過去数年、読書環境を改善するために、いろいろと試してみましたが、根本的な解決にはいたっていません。

  • 即日配達のAmazonプライムに入会 → ほしい本が即日/次の日には、読める環境は整った。でも、やっぱり物理的に本はかさばるんですよね。引っ越しでも、荷物の半分は本だし...。やっぱ、電子書籍だ。
  • Safari Books Onlineに入会 → 英語の技術書の多くはここからオンラインで読める

とりあえず、新聞と新刊書だけでもいいんで、日本でKindleはじめてもらえないかな...。アメリカでできて、日本でできない理由はなんなんだろ、ちょっと調べてみます。

(追伸)
Googleブック検索も、USでの和解を受けて、そうとう進歩してきているみたいですね

ATOK 2009 快調です!

9ヶ月ぶりのエントリに書く内容でもないですが... ATOK 2009を導入しました。
パソコンを使い始めてから、ずっとIMEATOKだったのですが、引っ越しの際に、ATOKのインストールCDがどこかにいってしまったこともあり、ここ数ヶ月MS-IMEを、だましだまし使っていました。
が、ついにストレスが臨界点を超えたため、あらためてATOKを導入することに相成りました。

今度は、パッケージ版ではなく、月々300円の定額プランを利用します。
http://www.justsystems.com/jp/products/atok_teigaku/

ATOKのいいところは、同時使用しなければ、ひとりで複数台(定額プランでは10台まで)にインストールすることができることですね。
http://www.justsystems.com/jp/products/atok_teigaku/qa.html#q01_2

ということで、家のPCも仕事のPCもATOKで快適であります。

2009になって導入された英語入力補助機能も意外と便利です。試しに使ってみるまでは、こんなの使えないと思っていたのですけどね。
http://www.justsystems.com/jp/products/atok/feature2.html

Google Analyticsの設定

備忘録がわりに、サイト/ソフトウェアごとのGoogle Analyticsの設定をまとめておきます。

Firefoxのアドレスバーでインクリメンタル・サーチ

Firefox 3 Beta 5を試用していますが、アドレス・バーで履歴のURL&タイトルをインクリメンタル・サーチできるのが、めちゃくちゃ便利です。ほんとうなら、即座にFirefox 3にのりかえたいところなんですが、アドオンの対応状況などから、まだメインのブラウザはFirefox 2なんです。
ただ、Firefox 2を使っていてもアドレス・バーでインクリメンタル・サーチを行いたいという欲求は抑えきれません。ってことで、アドオンを探してみるとズバリなアドオンがありました。
Autocomplete Manager 2.3
https://addons.mozilla.org/ja/firefox/addon/2300
これは、もう手放せません。