-1

我有一個存儲在DynamoDB中的每日日誌表(每天大約有10m輸入)。AWS:從dynamodb到紅移的數據轉換

爲了做分析,我需要它轉移到Redshift。此外,我需要通過解析一個字符串(nvarchar(250))來創建新的列。我的想法是使用COPY命令並將數據從DynamoDB傳輸到Redshift,然後使用UDF創建新列。

這種方法的問題是,它需要花費很多時間來完成(這兩個部分),並且它保持失敗(查詢的狀態爲ABORTED):我在一個複製命令中傳輸大約10天的數據。

您認爲應該採取更好的方法:使用數據管道還是EMR等一些亞馬遜服務?或做同樣的事情,但組織不同?

回答

1

我的設計建議不會將您的數據存儲在dynamodb中。因爲在執行復制命令時,從成本的角度來看,它會消耗您爲dynamo db設置的最高吞吐量值。

不知道你如何設置主鍵值,以及你爲dynamodb設置的當前通過put值。

爲此,我的解決方案是以所需格式的紅移存儲將數據寫入s3。從s3在週期性/一次性活動中使用數據管道將數據處理到紅移羣集。

Aws數據管道默認使用EMR來處理數據。

如果您在存儲數據之前需要更多清潔,請考慮在EMR中使用Spark。

但在此之前,你需要說。什麼是10米記錄大小的大小,你可以選擇採用我的建議,如寫入s3。如果是,則需要考慮性能/成本優化過程進行設計。

如果您需要更多幫助,發表評論將有助於我的最佳建議。

+0

謝謝你的回答!一個問題:您認爲數據管道可用於創建新列,同時將數據從dynamodb傳輸到S3,或者應該先傳輸數據然後再轉換(以紅移方式)? –

+0

沒有數據管道不支持此功能。爲什麼你不能用你需要的數據寫s3文件?如果你想從dynamo db中完成。去aws膠水或使用發電機數據流包裝和處理lambda的記錄和寫入s3(但我強烈不同意這種解決方案的長期/成本/性能因素) –

+0

據我所見,aws膠水(我想過它也是)只在一個地區有效:us east(n。virginia)和我的數據在另一個地區...... –

0

您可以使用AWS Glue來設置ETL(提取轉換加載)作業,以將數據從DynamoDB移動到Redshift。