簡體   English   中英

如何使用Apache BEAM在BigQuery中執行快速聯接

[英]How to perform a fast join in BigQuery with Apache BEAM

根據梁的節目指南 ,並根據多線程的 join可以通過以下方式實現CoGropByKeyKeyedPCollectionTuplecoockbook )。

沒有人在談論這種轉換的性能。

我的流程應該非常簡單:輸入來自BQ表( TableRow )的批處理行,並通過同一鍵將它們(或“ enrich”)與其他BQ表中的其他值連接起來。 因此,最終輸出也應該是TableRow類型。

我想了解將BEAM中的2個表與BQ表連接在一起的最佳實踐。

例如,我可以在BQ中創建一個View並替換所有管道,並執行更有效的聯接操作,但是我想處理代碼中的所有邏輯

處理join操作時,幕后情況是什么?

DirectRunner第二個BQ表執行n個查詢,以便加入所有管道批處理(項目后的項目)? 還是BEAM足夠聰明來聚合它並對所有批次執行1次查詢?

Google DataflowRunner是否以其他方式工作?

除了檢查運行時間外,如何檢查此管道的性能?

TTBOMK您不想在代碼中編寫完整的SQL,例如WHERE子句。 Beam或實際上任何基於代碼的SQL連接都會因BQ中保留的大量數據而失敗。 因此,任何此類“擴展”都應由底層數據處理解決方案真正完成,無論是BQ之上的SQL還是RDD / DataFrames / etc之上的Spark。

請注意,它不太適合流式處理,更適合批處理流。 如果要遵循純流方法,則應根據您的域使用快速數據庫,並避免使用OLAP樣式(真正的列式)數據庫。 BQ每個查詢的延遲很大。

告訴我們情況如何:)

暫無
暫無

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

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