hiveのloadコマンドに謎の制約

LOAD DATA LOCAL INPATH '/dir/_hoge' ...
みたく、ファイル名が “_” 始まりのファイルをLOADしようとしたら、何故か「そんなファイルはねえ!」と怒られエラーになった。

回避策としては、頭にワイルドカード入れる。以下なら正常終了。
LOAD DATA LOCAL INPATH '/dir/*hoge' ...

Hive 1.2.1000.2.5.0.0-1245 (HDP 2.5.0.0-1245) にて確認。

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]