S3
hive

Hiveのexternal table + s3のちょっとした検証

ちゃんと実装を知っている人には「何言ってんの当たり前やん馬鹿が死ねィッ」てなものでしょうけども、ほら、備忘にもなるし。

こんな感じでデータファイルを用意する。

・hoge.csv

1,"a"
2,"b"

・fuga.csv

3,"c"
4,"d"

・piyo.csv

5,"e"
6,"f"

create文はこんなので。
バケットとキーは適当に。

CREATE EXTERNAL TABLE s3verify (
  id int,
  name string
)
PARTITIONED BY (ts BIGINT)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
LOCATION 's3://tekitou/test';

まず、s3://tekitou/test
下に
ts=10000
キーを作成、その下にhoge.csvを設置。

s3://tekitou/test/ts=10000/hoge.csv

こんなんね。
で、select。
当然、

OK
Time taken: 0.306 seconds

empty。パーティション認識してないしね。

msck repair table s3verify;

をブン投げ、もう1度select。

OK
1       "a"     10000
2       "b"     10000

はい。ここまでは何度もやったからそらそうなるって感じはする。
で、この後。
ts=10000下に、fuga.csvをアップロード。すぐselectしてみる。

OK
1       "a"     10000
2       "b"     10000
3       "c"     10000
4       "d"     10000

認識している。これもまあ当然といえば当然感はある。
次。ts=10000下に add/ って階層を切り、その中にpiyo.csvを置いてみる。

s3://tekitou/test/ts=10000/add/piyo.csv

さてどうなるか。

OK
5       "e"     10000
6       "f"     10000
1       "a"     10000
2       "b"     10000
3       "c"     10000
4       "d"     10000

認識した。ちょっとびっくり。これってs3だからなのか、hdfsでも同じなのか。
気にはなったけどここまで。