0

我正在考慮將BigQuery作爲我的數據倉庫要求。現在,我在谷歌雲(雲SQL和BigTable)中獲得了我的數據。我公開了我的REST API以從兩者中檢索數據。現在,我想從這些API中檢索數據,執行ETL並將數據加載到BigQuery中。我正在評估ETL(每小時數據的每日工作頻率)的2個選項: -Google Cloud上的ETL - (數據流與Spring批處理) - > BigQuery

  1. 使用JAVA Spring Batch並創建微服務並使用Kubernetes作爲部署環境。它會縮放嗎?
  2. 使用雲數據流的ETL

然後使用BigQuery的批量插入API(初始負載)和流插入API(增量負載時,在源提供的新數據)來加載BigQuery的非規範化架構。

請讓我知道您的意見。

回答

1

不知道你的數據量,具體是多少新的或差異數據,你每天和你如何做分頁與REST API的 - 這裏是我的指導...

如果你走的路一個使用Spring Batch的人很可能不得不想出你自己的分片機制:你將如何劃分REST調用來實例化你的Spring服務?您也將在Kub管理空間中,並且將不得不通過流式API處理BQ重試。

如果你走下Dataflow路線,你將不得不編寫一些轉換代碼來調用你的REST API,並使分頁填充你的PCollection目的地爲BQ。通過最近添加的數據流模板,您可以:創建一個每N小時觸發一次的管道,並將您的REST調用參數化爲僅提取數據?since = latestCall。從那裏你可以執行BigQuery寫入。我建議在批處理模式下執行此操作,因爲1)如果您擁有數百萬行,它將會擴展得更好2)管理起來不那麼麻煩(在非活動時間內)。

由於Cloud Dataflow內置了BiqQuery的重試邏輯,並提供了所有輸入和輸出集合的一致性 - 我的投票是針對這種情況下的Dataflow。

您的REST呼叫有多大會導致記錄計數?

+0

@Eric ...感謝您的回答...從這個API中,我可以獲得第二基礎的數據數據(我將每天彙總到此數據庫中)。此API可以在每次調用時給出最多10000個數據點...還有分頁支持。讓我們舉個例子 - 實體總數 - 10,000,與每個實體相關的度量類型 - 1000.因此,每年(每次每次測量的單次輸入) - 365(不是天)* 10,000(總實體)* 1000(總測量) = 3650000000(約40億) – Abhay

+0

@abhay - 我支持我的答案,然後,我會用數據流。您的工作流程的每日節奏將與模板很好地協同工作,您可以在一天之內進行分區,以使您的查詢具有成本效益。 –

+0

@埃裏克斯..感謝您的回答 – Abhay

相關問題