有没有一种方法可以将数据集的多个值与左外连接(flink)中另一个数据集的单个值进行比较

wmvff8tz  于 2021-06-21  发布在  Flink
关注(0)|答案(1)|浏览(309)

我试图找到一种方法来检查是否可以使用flink left outer join检查一个数据集的两个值与另一个数据集的一个值?

final DataSet<type> finalDataSet = dataSet1
            .leftOuterJoin(dataSet2)
            .where("value1")
            .equalTo("value2")
            .with(new FunctionNameToBeImplemented())
            .name("StepName");

这对于一对一的检查很有效。
有没有类似的方法:

final DataSet<type> finalDataSet = dataSet1
            .leftOuterJoin(dataSet2)
            .where(["value1","value2"]) // List of values
            .contains("value2")
            .with(new FunctionNameToBeImplemented())
            .name("StepName");

我希望输出先检查value1,然后检查value2,如果其中任何一个(或两者)匹配,则将其传递给函数“functionnametobeimplemented()”进行进一步处理。

bgtovc5b

bgtovc5b1#

flink的dataset api中的外部连接是严格的相等连接。
您可以使用两个单独的连接来实现用例,并合并结果。为了避免重复,连接函数的on应该检查其他条件是否也适用,并且只在不适用的情况下生成结果。

left  -\
        > JOIN(l.val1 == r.val2)[emit result] ---------------------\
right -/                                                            \
                                                                     > UNION
left  -\                                                            /
        > JOIN(l.val2 == r.val2)[emit result if l.val1 != r.val2) -/
right -/

相关问题