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個相關的問題:
- 請問在這種情況下運行
msck repair table
,花了我的錢在AWS? - AWS Docs say
msck repair table
可能超時。有沒有一種方法可以讓數據管道中的步驟繼續運行此命令,直到它成功完成? - 我寧願手動添加分區給雅典娜(因爲我知道我正在工作的年,月,日,小時)。但是我不知道
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/';