2016-02-04 73 views
0

我正在分析流數據(Web事件)。Dataflow和Big Query中的窗口函數

是否有一個好的經驗法則可以幫助我確定我是否應該

  1. 的數據流進行分組和聚集並寫入輸出

  • 使用數據流流入Big Query,並可能使用範圍裝飾器來限制數據/使用SQL的分區和聚合的窗口功能。
  • 望着文檔中的例子,本文 https://cloud.google.com/dataflow/blog/dataflow-beam-and-spark-comparison

    經典批處理編程,每小時球隊成績,所有的時間用戶得分,用戶行爲分析覺得他們是直接通過SQL創建(給定"created""write"時間戳記錄)

    垃圾郵件過濾示例我可以看到使用BQ的限制(如果這適用於每個事件流基礎)。

    數據流的語義似乎在GroupBy,Join,Combine,Windowing以及BQ支持流式插入的情況下重疊,可用性在幾秒鐘之內,足夠短以便進行小時級別聚合。

    有沒有根本的東西我還沒有明白?或者有沒有一種情況下流入BigQuery,然後查詢將開始變得不可靠?

    謝謝

    克里斯

    (道歉,如果這個問題有點模糊 - 快樂被重定向到一個更好的地方問)

    回答

    1

    下面,不一定回答您的具體問題,但而是增加了另一個需要考慮的方面:
    1.如果您正在構建應該爲您的基礎架構提供動力的流程 - 數據流可能是一個不錯的選擇。當然,你必須綁定到你的技術團隊資源。
    2.如果您計劃非技術人員的特設和自助式活動(當然,技術人員也不排除在這裏) - 您可以專注於使用BigQuery的查詢功能(包括窗口功能)並確保您擁有良好的實際工作示例,其他公司可以將其用作模板,以開始充分利用BigQuery和GCP的強大功能。這證明工作很好!領域專家現在可以自己回答他們的問題(就像你徵求你的問題一樣),而他們自己不需要技術人員。質量和時間在這種情況下更好!

    3

    是否選擇在數據流中執行分組和聚合或使用BigQuery操作(在使用數據流獲取數據之後)取決於應用程序邏輯和消耗輸出的內容。例如,會話和滑動窗口在SQL中都很難表達;而Dataflow支持任意處理,如觸發估計。需要考慮的另一件事是,使用命令式編程語言而不是使用SQL來表達計算邏輯可能更容易。

    +0

    謝謝 - 我強烈地感到差異將隨着經驗而出現,我們剛剛開始向流式架構遷移。我想補充一點,根據我的經驗,會話和滑動窗口很容易在SQL中使用窗口函數表示,這些窗口函數以'{ROWS |範圍}或範圍子句,這是我的一些混淆源於的地方。我們已經通過這種方式實施了分割測試和可變加權歸因。 – Chris