我想在Cascading中交叉加入两个元组流。让我们假设有两个名单:女士们和先生们,目标是将所有可能的女士 - 绅士组合写成一个文件(例如,假设约会网站的“女性寻求男性”部分的所有可能的匹配)。 / p>
我在this blog上找到了一个类似的示例,并尝试调整代码以进行交叉连接(请参阅https://github.com/alexwoolford/cascading-crossjoin-stackoverflow-question)。
operate
类中的Crossjoin
方法抛出空指针。首先,此行中的getJoinerClosure()
调用会返回null
:
JoinerClosure joinerClosure = bufferCall.getJoinerClosure();
...然后紧接着的if
语句尝试获得null
的大小:
if( joinerClosure.size() != 2 )
[...]
...导致空指针异常。
你能看到我出错的地方吗?
答案 0 :(得分:0)
当我从rhsGroupFields
构造函数中删除new CoGroup
参数时,它起了作用,即从以下位置更改:
Pipe pipeLadiesAndGentlemen = new CoGroup(pipeLadies, Fields.NONE, pipeGentlemen, Fields.NONE, new Fields("lady", "gentleman"), new BufferJoin());
..来:
Pipe pipeLadiesAndGentlemen = new CoGroup(pipeLadies, Fields.NONE, pipeGentlemen, Fields.NONE, new BufferJoin());