[英]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.