Cascading中的Crossjoin

时间:2015-09-13 03:26:26

标签: java cascading

我想在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 )
    [...]

...导致空指针异常。

你能看到我出错的地方吗?

1 个答案:

答案 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());