當我將資料從 Amazon Data Firehose 推送到 Amazon Simple Storage Service (Amazon S3) 時,Firehose 會在我的 S3 儲存貯體中建立小型檔案。
簡短描述
Firehose 傳送的記錄小於 BufferingHints API 所指定的大小,可能是由於以下原因:
- 您開啟了壓縮功能。
- Firehose 傳遞串流進行了擴展。
- 您將 Amazon Kinesis Data Streams 列為資料來源。
解決方法
您開啟了壓縮功能
如果您為 Firehose 傳遞串流開啟了壓縮功能,則 Firehose 會在壓縮之前,先套用 BufferingHints API 的 SizeInMBs 和 IntervalInSeconds 參數。
在每批記錄緩衝區之後,Firehose 會套用這些參數。然後,Firehose 會壓縮資料記錄並在 Amazon S3 中建立小型檔案。
Firehose 傳遞串流進行了擴展
如果您要求增加配額或 Firehose 自動擴展,則 Firehose 傳遞串流也會擴展。預設情況下,Firehose 會自動將傳遞串流擴展到一定配額。這種自動擴展行為可以在不增加配額的情況下減少限流。
當 Firehose 傳遞串流擴展時,BufferingHints API 可能會受到影響。
**注意:**設定 Firehose 時,您可以設定緩衝區大小。
在 Firehose 傳遞串流中,Firehose 會在平行通道中緩衝資料,並同時傳遞資料。例如,Firehose 會緩衝資料並根據緩衝區大小配額建立單一檔案。如果 Firehose 擴展至目前輸送量配額的兩倍,則兩個不同的通道會在相同的時間間隔內建立檔案。如果 Firehose 擴展至四倍,那就會有四個不同的通道於同一時間間隔內,在 Amazon S3 中建立四個檔案。
當傳遞串流擴展時,如果擴展係數和傳入流量不相符,Firehose 會建立較小的檔案。例如,如果 Firehose 擴展到原始容量的四倍,而傳入流量也增加到原始流量的四倍,則檔案大小會保持一致。但是,當 Firehose 擴展四倍而流量保持不變時,Firehose 會將相同數量的資料分配到更多的通道中。然後,檔案的大小就會變小。
**注意:**由於存在多個平行緩衝通道,這兩種情況下的檔案數量可能會增加。
請確定 Firehose 傳遞串流不會超過預設配額。若要查看 Firehose 傳遞串流的目前配額,請檢查以下 Amazon CloudWatch 指標:
- BytesPerSecondLimit
- RecordsPerSecondLimit
- PutRequestsPerSecondLimit
如果這些指標的值與預設配額不同,則 Firehose 傳遞串流會進行擴展。
您將 Kinesis Data Streams 列為資料來源
當您將資料串流列為 Firehose 的資料來源時,Firehose 會在內部擴展。預設情況下,Firehose 會進行擴展以滿足資料串流的容量。當 Firehose 擴展時,緩衝區大小會發生變化,並可能導致傳遞較小的記錄。
**注意:**Firehose 將緩衝提示選項視為提示。因此,Firehose 可能會選擇使用不同的值來最佳化緩衝區。