Mapper/ReducerではrunというメソッドもOverrideできる

ということを今更知った。 runのデフォルトの実装の中で、setup, map/reduce, cleanup を呼び出している。

Mapper (Apache Hadoop Main 2.7.3 API)

Reducer (Apache Hadoop Main 2.7.3 API)

参考:in-mapper combining(MapReduceデザインパターン) | mwSoft

自作クラスでHadoopのGeneric Optionsを使えるようにする。

最近、Hadoop忘れてきたのでメモ…

自作クラスにToolを実装させればHadoopのGeneric Optionsを解釈してくれるようになる。

Generic Options

つまり、-confオプションでHadoopの設定を上書きしたりできるようになる。

attrbuteに対する||=でハマる。

class some_class
  attr_accessor :hoge

  def some_method
    hoge ||= "value"
  end

この5行目で、hogeのアクセサが呼ばれるのではなく、hogeという新しい変数が定義されてしまう…

@hoge ||= "value"

とするしかない。

bashの関数はwhichコマンドしても出処が分からない

which や whereis でコマンドのパスが出ないんで「なんだろうな?」と思ったが、よく考えたら .bash_profile で定義しているbash関数だった。 関数の定義は以下で確認できる。

declare -f [function name]

ディレクトリのハードリンク恐い…

coreutils入れて ln -F すればディレクトリのハードリンクも作れるのだが、消すには rm -fr するしかなさそう。 そうすると、ディレクトリの中身も消えてしまう… 一旦、中身の場所を移し、ハードリンク消してから戻せば良さそうだが、中身が多いとちょっと大事…

よく分かって無くて rm -fr を消してしまった。 Box Syncでバックアップしてたので戻せたのだが、Box Syncはdotfileをバックアップしてくれないので、難儀した…

githubリポジトリを別名コピーするやり方

リポジトリ hogehoge-cp にコピー。

まず、githubhoge-cpリポジトリを空で作っておく。 それから、どこかの端末で以下を実行。

git clone git@xxx/hoge.git
git remote set-url origin git@xxx/hoge-cp.git
git push

bashのfor分で数値の範囲を指定する方法。

知らんかった…

$ for i in {1..10}; do echo $i ; done
1
2
3
4
5
6
7
8
9
10

更にゼロパディングしたい場合は、

$ for i in {01..10}; do echo $i ; done
01
02
03
04
05
06
07
08
09
10