ちゃんとログ見ればすぐ気づくことだったけど…
EMRでHadoop+Hive。
CREATE TABLE [[テーブル名]] STORED AS ORC location 's3://[[s3パス]]' TBLPROPERTIES('EXTERNAL'='TRUE', 'orc.compress'='zlib') AS SELECT * FROM [[テーブル名]]
Moving data to directory s3://[[s3パス]]
Failed with exception Unable to move source s3://[[s3パス]]/hoge/fuga...
INSERT INTO テーブル名 SELECT...
は通るのになんでやねん。と思ってたら。
No Such File or Dir s3://[[s3パス]]/hoge
えっ
まさかと思い手動でhogeオブジェクトをs3上に作成。
通るようになりました。
s3のputとかはオブジェクトまでのパスがなくても勝手に作ってくれるからそこを疑いもしなかったのと、EMR上でのHiveの詳細なログがターミナルで操作した場合どこに吐かれるのかわからんかったせいでドハマりした。
最終的には全く別チームが作っていたEMRにjdbc接続して(HiveServer2)HQL投げるって機構があったおかげで、/mnt/var/log/hive/hiveserer2.logにバックトレースが吐かれたので気づけた。
ターミナルからやるとここに吐かれないからわからないんだよね… どっかに吐かれるのかなあ