2014-01-08 46 views
0

我試圖在EMR上使用鯊魚,我似乎無法從位置設置爲S3存儲桶的表中恢復我的分區。當我嘗試顯示我的分區時,我什麼也沒有得到。無法恢復鯊魚與S3位置Hive表中的分區

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/' ; 

我的日誌桶包含位於s3://my-log/parsed-logs/dt=2014-01-03/level=ERROR/一個日誌文件。

MSCK REPAIR TABLE logs命令應該等同於亞馬遜蜂巢擴展ALTER TABLE logs RECOVER PARTITIONS根據the Hive language manual,但是當我運行命令時,我得不到可見的分區。我試着用與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) 

我是否在使用鯊魚時丟失了某些東西?

回答

0

我對AWS說過,他們說我現在唯一的選擇是堅持使用Hive,因爲MSCK REPAIR TABLE在尋址位於S3的表格(這就是爲什麼他們添加了ALTER TABLE RECOVER PARTITION命令的原因)時有一些問題。