[英]How can I dynamically add field in MapElements in apache_beam?
[英]How do I use MapElements and KV in together in Apache Beam?
我想做類似的事情:
PCollection<String> a = whatever;
PCollection<KV<String, User>> b = a.apply(
MapElements.into(TypeDescriptor.of(KV<String, User>.class))
.via(s -> KV.of(s, new User(s))));
其中 User 是帶有 Arvo 編碼器和考慮字符串的構造函數的自定義數據類型。
但是,我收到以下錯誤:
無法從參數化類型中選擇
我試圖將其更改為TypeDescriptor.of(KV.class)
,但隨后我得到:
不兼容的類型; 必需的 PCollection> 但“應用”被推斷為 OutputT:不存在類型變量的實例,因此 PCollection 符合 PCollection>
那么我應該如何將KV
與MapElements
一起使用?
我知道我想要做的是使用ParDo
是可行的,我可以通過清除new DoFn<String, KV<String, User>>
來明確指定如何執行類型擦除,但ParDo
不支持 lambda 函數。 當我們使用 Java 8 時,這似乎不太優雅......
嘗試使用 SimpleFunction - 它保留類型信息
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.