2017-03-16 42 views
3

我在S3 ORC的數據,看起來像這樣:AWS Athena:'msck repair table`會產生費用嗎?

s3://bucket/orc/clientId=client-1/year=2017/month=3/day=16/hour=20/ 
s3://bucket/orc/clientId=client-2/year=2017/month=3/day=16/hour=21/ 
s3://bucket/orc/clientId=client-3/year=2017/month=3/day=16/hour=22/ 

每一個小時我運行轉換在S3到ORC生JSON的EMR的工作,並與路劃分約定(上面)雅典娜寫出來攝入。 EMR作業完成後,我運行msck repair table,以便Athena可以拿起新的分區。

我有3個相關的問題:

  1. 請問在這種情況下運行msck repair table,花了我的錢在AWS?
  2. AWS Docs saymsck repair table可能超時。有沒有一種方法可以讓數據管道中的步驟繼續運行此命令,直到它成功完成?
  3. 我寧願手動添加分區給雅典娜(因爲我知道我正在工作的年,月,日,小時)。但是我不知道clientId,因爲它們可能有1-X,我不知道在運行EMR時存在哪些。有沒有解決這個問題的最佳實踐方法(使用Hive或其他)?我可以通過s3 api調用獲取s3://bucket/org/的列表並編寫代碼來遍歷列表並手動添加。我希望有一個更簡單的方法...

注:當我說 「添加分區手動」 我的意思是做這樣的事情:

ALTER TABLE <athena table> 
ADD PARTITION (clientId='client-1',year=2017,month=3,day=16,hour=20) 
location 's3://bucket/orc/clientId=client-1/year=2017/month=3/day=16/hour=20/'; 

回答

1

AWS says

DDL查詢或分區檢測不收費。

AWS says

S3 GET收費不適用。

我還不知道如何自動化msck repair table以確保它完成。