我试图找到一种方法来检查是否可以使用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()”进行进一步处理。
1条答案
按热度按时间bgtovc5b1#
flink的dataset api中的外部连接是严格的相等连接。
您可以使用两个单独的连接来实现用例,并合并结果。为了避免重复,连接函数的on应该检查其他条件是否也适用,并且只在不适用的情况下生成结果。