gpt4 book ai didi

java - 使用级联框架运行hadoop程序时获取cascading.tap.hadoop.io.MultiInputSplit类未找到异常

转载 作者:行者123 更新时间:2023-12-02 21:54:28 24 4
gpt4 key购买 nike

这是我连接到 hadoop 机器并执行一组验证并在另一个目录上写入的代码。

      public class Main{

public static void main(String...strings){

System.setProperty("HADOOP_USER_NAME", "root");
String in1 = "hdfs://myserver/user/root/adnan/inputfile.txt";
String out = "hdfs://myserver/user/root/cascading/temp2";

Properties properties = new Properties();
AppProps.setApplicationJarClass(properties, Main.class);
HadoopFlowConnector flowConnector = new HadoopFlowConnector(properties);

Tap inTap = new Hfs(new TextDelimited(true, ","), in1);
Tap outTap = new Hfs(new TextDelimited(true, ","), out);

Pipe inPipe = new Pipe("in1");

Each removeErrors = new Each(inPipe, Fields.ALL, new BigFilter());
GroupBy group = new GroupBy(removeErrors, getGroupByFields(fieldCols));
Every mergeGroup = new Every(group, Fields.ALL, new MergeGroupAggregator(fieldCols), Fields.RESULTS);

FlowDef flowDef = FlowDef.flowDef()
.addSource(inPipe, inTap)
.addTailSink(mergeGroup, outTap);

flowConnector.connect(flowDef).complete();

}

我的工作正在提交给 hadoop 机器。我可以在工作跟踪器上查看这个。但是工作失败了,我在下面遇到异常。

cascading.tap.hadoop.io.MultiInputSplit 未找到
在 org.apache.hadoop.mapred.MapTask.getSplitDetails(MapTask.java:348)
在 org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:389)
在 org.apache.hadoop.mapred.MapTask.run(MapTask.java:333)
在 org.apache.hadoop.mapred.Child$4.run(Child.java:268)
在 java.security.AccessController.doPrivileged( native 方法)
在 javax.security.auth.Subject.doAs(Subject.java:415)
在 org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1408)
在 org.apache.hadoop.mapred.Child.main(Child.java:262)
原因:java.lang.ClassNotFoundException: Class cascading.tap.hadoop.io.MultiInputSplit not found
在 org.apache.hadoop.conf.Configuration.getClassByName(Configuration.java:1493)
在 org.apache.hadoop.mapred.MapTask.getSplitDetails(MapTask.java:346)
... 7 更多

java.lang.ClassNotFoundException:类 cascading.tap.hadoop.io.MultiInputSplit 未找到
在 org.apache.hadoop.conf.Configuration.getClassByName(Configuration.java:1493)

注意 :
1.我从我的 Windows 机器上运行它,并且 hadoop 设置在不同的盒子上。
2.我正在为hadoop使用cloudera发行版,即CDH 4。

最佳答案

您的属性文件是空的,因此您的此作业的配置可能在集群上已关闭。您必须将您正在使用的配置提供给 HadoopFlowController .调用 new Configuration 时找到的 Hadoop 配置文件中包含的信息属于您的Properties对象 - 诸如 fs.default.name=file://// 之类的东西等等。我想当您在“电线”上运行级联作业时情况更是如此。

关于java - 使用级联框架运行hadoop程序时获取cascading.tap.hadoop.io.MultiInputSplit类未找到异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15988091/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com