簡體   English   中英

如何將運行時查詢傳遞給 apache beam 中的 SqlTransform?

[英]How to pass Runtime query to SqlTransform in apache beam?

我想在運行數據流作業時動態傳遞查詢。 我正在使用 SQLTransform,當我在代碼中傳遞 Query 時它工作正常。

我的用例需要在運行時傳遞查詢,是否可以在 Apache Beam 中使用SqlTransform

如果我在代碼中對其進行硬編碼,這將起作用。

String PQuery = "SELECT col1, max(col2) as max_watermark FROM PCOLLECTION GROUP BY col1";
PCollection<Row> rows1 =   rows.apply(SqlTransform.query(PQuery));

但是對於valueProvider輸入,它會給出編譯時錯誤。

PCollection<Row> rows1 =   rows.apply(SqlTransform.query(options.getQuery()))

錯誤

The method query(String) in the type SqlTransform is not applicable for the arguments (ValueProvider<String>)

要解決您的問題,您需要在ValueProvider中獲取值:

PCollection<Row> rows1 = rows.apply(SqlTransform.query(options.getQuery().get()))

query方法采用String作為參數,這就是為什么您需要獲取ValueProvider選項的String值。

您應該使用FlexTemplates ,它允許基於模板參數的動態圖形構造(例如 SqlTransform)使用。

暫無
暫無

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

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