簡體   English   中英

處理兩個 DataStream<string> 同時,要在 flink 中找到一個 DataStream 包含來自其他 DataStream 的值?</string>

[英]Precessing two DataStream<String> simultaneously ,to find one DataStream contains values from other DataStream in flink?

假設我有兩個DataStream<String> ,我收到了來自 Kafka 的流,經過一些處理,我得到了這兩個流。

DataStream<String> A contains values {id1_id2 , id3_id4, id99_id0, id15_id3,id11_id5....}

DataStream<String> B contains values {id2, id3,id5...}

是否可以對 DataStream A 進行一些處理,以便它將 output 中的值在另一個

DataStream<String> C ={id1, id3, id15, id11}

因此,B 中存在的所有值都將與 A 相交。我嘗試過使用 processElement() 和 RichCoFlatMapFunction,但它不起作用。

public class MatchAggregator
        extends RichCoFlatMapFunction<String, String, Tuple1<String>> {

    private ValueState<String> doubleState;
    private ValueState<String> singleState;

    @Override
    public void open(Configuration config) {

        doubleState = getRuntimeContext().getState(new ValueStateDescriptor<>("doubleEvents",String.class));
        singleState = getRuntimeContext().getState(new ValueStateDescriptor<>("singleEvents",String.class));
    }
    
    @Override
    public void flatMap1(String s, Collector<Tuple1<String>> collector) throws Exception {
        String single = singleState.value();
       //this is outputting null.
        System.out.println(single);
      //s is also null
        if(single.contains(s)){
            String replaceNumber = single.replace(s,"");
            String replaceEmp = replaceNumber.replace("_","");
            single.clear();
            collector.collect(Tuple1.of(replaceEmp));
        }else {
            personContactState.update(s);
        }
    }

    @Override
    public void flatMap2(String s, Collector<Tuple1<String>> collector) throws Exception {

        
    }
}

我正在使用兩個數據流,例如:

DataStream<Tuple1<String>> match = A.connect(B).flatMap(new MatchAggregator());

match.print();

RichCoFlatMapFunction的確切行為將取決於您如何鍵入兩個連接的流。

String single = singleState.value()將檢索先前為與傳入String s的鍵相同的鍵存儲的任何值。 在您共享的代碼中,從不會在singleState上調用update ,因此singleState.value()將始終為 null。

暫無
暫無

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

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