簡體   English   中英

GCP - 創建數據流(Pub/Sub -> 預測(ML 模型)-> BigQuery/Firebase)

[英]GCP - Creating a Dataflow (Pub/Sub -> prediction(ML model) -> BigQuery/Firebase)

我是 GCP 的新手,我想為我的項目創建一個數據流。 長話短說,我的設備將數據發送到 Pub/Sub,然后,我想使用 ML 模型進行預測,然后將所有這些輸出到 BigQuery 和實時 firebase 數據庫。 從谷歌上找到了這篇文章(我查看了 Stream + Micro-batching 但沒有實現它)和這個github 存儲庫,但我真的不知道如何運行它,如果有人能幫我一把,我將非常感激。

使用雲功能實現所有這些會更容易嗎?

有多種方法可以解決您的用例。

首先,我不確定是否需要 Dataflow。 Dataflow 非常適合本文所述的數據轉換或數據比較,但我不確定這是否是您的用例。 如果是這樣,這里有幾個建議(如果你願意,我們可以深入研究一個)

  • 更便宜的不可擴展:在您的 PubSub 主題上設置拉訂閱。 然后,設置一個 Cloud Scheduler,每 2 分鍾調用一次 HTTP 服務(如 Cloud Function 或 Cloud Run)。 HTTP 服務將拉取訂閱。 對於每條消息,它執行預測並將結果存儲在內存中(在數組中)。 處理完所有消息后,您可以在 BigQuery 中執行加載作業(或在 Datastore 中批量插入)。

此解決方案更便宜,因為您通過微批處理處理消息(處理時間更有效),並且您將加載作業執行到 BigQuery(與流式傳輸相比,這是免費的)。 但是,它不可擴展,因為您在觸發加載作業之前將數據保存在內存中。 如果你有越來越多的數據,你可以達到 Cloud Run 或 Cloud Function 的 2Gb 內存限制。 增加調度程序頻率不是一種選擇,因為您每天有 1000 個加載作業的配額(1 天 = 1440 分鍾 -> 因此,每一分鍾都是不可能的)。

  • 最簡單的是最昂貴的:在您的 pubSub 上插入一個 HTTP 服務(Cloud Run 或 Cloud Function -> Cloud Run 僅適用於推送訂閱,Cloud Function 使用拉取和推送訂閱)。 對於每條消息,都會調用 HTTP 服務並執行預測,然后將寫入流式傳輸到 BigQuery

這種解決方案具有高度可擴展性,也是最昂貴的一種。 我推薦您使用允許同時處理多條消息的 Cloud Run,從而減少計費實例處理時間。 (我寫了一篇關於這個的文章

最終,如果您不必盡快處理消息,最好的選擇是執行兩者的混合:安排微批處理以拉取 pubsub pull 訂閱。 對於每條消息執行預測並將流寫入 BigQuery(以防止內存溢出)。

如果您確實需要在您的流程中使用 Dataflow,請詳細描述您想要實現的目標以獲得更好的建議。

無論如何,我同意@JohnHanley 的評論,執行 Qwiklabs 以了解您可以使用該平台做什么!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM