EMR で Shark を使用しようとしていますが、場所が S3 バケットに設定されているテーブルからパーティションを復元できないようです。パーティションを表示しようとしても何も得られません。
shark> MSCK REPAIR TABLE logs ;
OK
Time taken: 1.79 seconds
shark> SHOW PARTITIONS logs ;
OK
Time taken: 0.073 seconds
私は自分のテーブルを次のように作成します
SET hive.exec.dynamic.partition = true ;
SET hive.exec.dynamic.partition.mode = nonstrict ;
CREATE EXTERNAL TABLE IF NOT EXISTS logs (
time STRING,
thread STRING,
logger STRING,
identity STRING,
message STRING,
logtype STRING,
logsubtype STRING,
node STRING,
storageallocationstatus STRING,
nodelist STRING,
userid STRING,
nodeid STRING,
path STRING,
datablockid STRING,
hash STRING,
size STRING,
value STRING,
exception STRING,
server STRING,
app STRING,
version STRING
)
PARTITIONED BY (
dt STRING,
level STRING
)
ROW FORMAT
DELIMITED
FIELDS TERMINATED BY '\t'
LINES TERMINATED BY '\n'
STORED AS TEXTFILE
LOCATION 's3://my-log/parsed-logs/' ;
私のログ バケットには、 にある 1 つのログ ファイルが含まれていますs3://my-log/parsed-logs/dt=2014-01-03/level=ERROR/
。
このコマンドは、Hive 言語マニュアルによると、Amazon のMSCK REPAIR TABLE logs
Hive 拡張機能と同等であるはずですが、コマンドを実行すると、目に見えるパーティションが表示されません。Hiveでまったく同じことを試してみましたが、魅力的に機能しました。ALTER TABLE logs RECOVER PARTITIONS
ALTER TABLE logs RECOVER PARTITIONS
hive> ALTER TABLE logs RECOVER PARTITIONS ;
OK
Time taken: 0.975 seconds
hive> SHOW PARTITIONS logs ;
OK
dt=2014-01-03/level=ERROR
Time taken: 0.078 seconds, Fetched: 1 row(s)
Shark を使用しているときに、ここで何か不足していますか?