2017-02-09 63 views
0

我們的s3桶通常有許多子目錄,這樣一個桶的路徑就像s3:top-level-function-group/more-specific-folder/org-tenant-company-id/entityid /實際數據可以爲s3 bucket子目錄創建athena表嗎?

我們正在研究Athena能夠在該/實際數據級別上查詢數據,但在org-tenant-company-id中查詢,因此必須作爲某種參數。

or or-tenant-company-id be a partition?

是否有可能創建一個雅典娜表查詢此結構?那麼s3位置在創建表嚮導上會是什麼?我試着用s3:top-level-function-group/more-specific-folder /但是當它運行時,我認爲它說'0 Kb data read'。

+0

你的計劃對我來說聽起來可行。你可以分享沒有用的create table語句嗎? – James

+0

最初的create table語句似乎正常工作;至少它沒有錯誤;但它也沒有加載任何數據;我再次嘗試,我認爲問題是一個不存在的專欄;現在我想將其沿着org-tenant-company-id子目錄進行分區,但這可能是一個單獨的問題,除非您知道它 – user26270

回答

1

您可以創建一個分區表如下所示,其中的分區鍵定義僅在分區BY子句中,而不是在表中的字段列表:

CREATE EXTERNAL TABLE mydb.mytable (
    id int, 
    stuff string, 
    ... 
) 
PARTITIONED BY (
    orgtenantcompanyid string 
) 
LOCATION 's3://mybucket/top-level-function-group/more-specific-folder/'; 

創建表後,您就可以負荷個別分區:

ALTER TABLE mydb.mytable ADD PARTITION (orgtenantcompanyid='org1') 
LOCATION 's3://mybucket/top-level-function-group/more-specific-folder/org1'; 

結果行將包含分區字段,如orgtenantcompanyid

+0

謝謝,但我認爲我們需要自動完成分區。不希望手動維護分區。它看起來像這樣做,我們必須將我們的子目錄更改爲'key = value'格式,以便自動將它們識別爲分區 – user26270

+0

您是否仍然需要調用'MSCK REPAIR TABLE mydb.mytable'? [場景1:數據已經以分區格式存儲在S3上](http://docs.aws.amazon.com/athena/latest/ug/partitions.html#scenario-1-data-already-partitioned-and-存儲在s3-in-hive格式) – James

+0

我不知道,從那裏不清楚是否需要在創建更多分區時繼續調用該命令,或者它是否是一次性事物。 – user26270