ちゃんと実装を知っている人には「何言ってんの当たり前やん馬鹿が死ねィッ」てなものでしょうけども、ほら、備忘にもなるし。
こんな感じでデータファイルを用意する。
・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でも同じなのか。
気にはなったけどここまで。