有人可以解释为什么当我尝试在本地文件系统上运行作业时,此代码会抛出异常吗?我是Hadoop / Cascading的新手,我试图获得每行多个列并计算这些列中值的频率(不区分它们来自哪个列键)
我很茫然。如果有人可以向我解释我的思维过程在哪里误入歧途,我将非常感激。我更关心学习技术及其库而不是生成工作代码。
这是源代码: http://pastebin.com/USTUJ5Da
这是堆栈跟踪:
SLF4J:无法加载类“org.slf4j.impl.StaticLoggerBinder”。 SLF4J:默认为无操作(NOP)记录器实现 SLF4J:有关详细信息,请参阅http://www.slf4j.org/codes.html#StaticLoggerBinder。 PIPE0 + PIPE1 + pipe2 + PIPE3 + pipe4 + pipe5 + pipe6 线程“main”中的异常cascading.flow.planner.PlannerException:无法从汇编构建流:[[pipe0 + pipe1 + pipe2 + pipe ...] [com.wellcentive.DQ1a.main(DQ1a.java:51)]合并的流必须以相同的顺序声明相同的字段名称,预期:[{7}:'PROC_NUM','DX 1','DX 3','DX 4','DX 5','DX 6', 'code']发现:[{7}:'PROC_NUM','DX 2','DX 3','DX 4','DX 5','DX 6','代码']] at cascading.flow.planner.FlowPlanner.handleExceptionDuringPlanning(FlowPlanner.java:576) at cascading.flow.hadoop.planner.HadoopPlanner.buildFlow(HadoopPlanner.java:263) at cascading.flow.hadoop.planner.HadoopPlanner.buildFlow(HadoopPlanner.java:80) at cascading.flow.FlowConnector.connect(FlowConnector.java:459) at cascading.flow.FlowConnector.connect(FlowConnector.java:450) at cascading.flow.FlowConnector.connect(FlowConnector.java:426) at cascading.flow.FlowConnector.connect(FlowConnector.java:275) at cascading.flow.FlowConnector.connect(FlowConnector.java:257) 在com.wellcentive.DQ1a.main(DQ1a.java:68) 引起:cascading.pipe.OperatorException:[pipe0 + pipe1 + pipe2 + pipe ...] [com.wellcentive.DQ1a.main(DQ1a.java:51)]合并的流必须声明相同的字段名称,顺序相同,预期:[{7}:'PROC_NUM','DX 1','DX 3','DX 4','DX 5','DX 6','代码']找到:[{7}:'PROC_NUM ','DX 2','DX 3','DX 4','DX 5','DX 6','代码'] at cascading.pipe.Splice.resolveDeclared(Splice.java:1276) at cascading.pipe.Splice.outgoingScopeFor(Splice.java:992) at cascading.flow.planner.ElementGraph.resolveFields(ElementGraph.java:628) at cascading.flow.planner.ElementGraph.resolveFields(ElementGraph.java:610) at cascading.flow.hadoop.planner.HadoopPlanner.buildFlow(HadoopPlanner.java:248) ......还有7个
答案 0 :(得分:0)
在级联时使用合并,
您应该拥有相同的字段名称
这里冲突是一个表中的D1和另一个表中的D2,将它们更改为相同的字段名称。