我正在尝试编写一个由两个流程组成的Casacading(v1.2) casade ( http://docs.cascading.org/cascading/1.2/userguide/htmlsingle/#N20844 ):
1) 第一个流将url
s 输出到一个 db 表,(在该表中,它们通过自动递增的 id 值自动分配 id)。此流程还将成对的 url 输出到SequenceFile
字段名称为“ urlTo
”、“ urlFrom
”的字段中。
2) 第二个流程从这两个源读取并尝试CoGroup
对“ urlTo
”(来自 SequenceFile)和“ url
”(来自 db 源)执行一次操作,以获取id
每个“ ”的 db 记录“ urlTo
”。
然后它对CoGroup
“ urlFrom
”和“ ”执行一个操作以获取每个“ ”url
的数据库记录“ ”。id
urlFrom
这两个流程单独工作 - 如果我在运行第二个流程之前在第一个流程上调用 flow.complete() 。但是如果我把这两个流放在一个级联对象中,我会得到错误
cascading.cascade.CascadeException: no loops allowed in cascade, flow: urlLink*url*url, source: JDBCTap{connectionUrl='jdbc:mysql://localhost:3306/mydb', driverClassName='com.mysql.jdbc.Driver', tableDesc=TableDesc{tableName='urls', columnNames=null, columnDefs=null, primaryKeys=null}}, sink: JDBCTap{connectionUrl='jdbc:mysql://localhost:3306/mydb', driverClassName='com.mysql.jdbc.Driver', tableDesc=TableDesc{tableName='url_link', columnNames=[urlLinkFrom, urlLinkTo], columnDefs=[bigint(20), bigint(20)], primaryKeys=[urlLinkFrom, urlLinkTo]}}
关于尝试配置级联。
我可以看到它来自addEdgeFor
函数,CascadeConnector
但我不清楚如何解决这个问题。
我以前从未使用过Cascade
/ CascadeConnector
。有什么我想念的吗?