getting cascading.tap.hadoop.io.multiinputsplit class not found使用级联框架运行hadoop程序时出现异常

iibxawm4  于 2021-06-03  发布在  Hadoop
关注(0)|答案(2)|浏览(546)

下面是我的代码,它连接到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机器。我可以在求职者网站上查到。但工作越来越失败,我得到下面的例外。
在org.apache.hadoop.mapred.maptask.getsplitdetails(maptask)中找不到cascading.tap.hadoop.io.multiinputsplit。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)在javax.security.auth.subject.doas(主题)中的java.security.accesscontroller.doprivileged(本机方法)。java:415)在org.apache.hadoop.security.usergroupinformation.doas(usergroupinformation。java:1408)在org.apache.hadoop.mapred.child.main(child。java:262)原因:java.lang.classnotfoundexception:类cascading.tap.hadoop.io.multiinputsplit在org.apache.hadoop.conf.configuration.getclassbyname(配置)中找不到。java:1493)在org.apache.hadoop.mapred.maptask.getsplitdetails(maptask。java:346) ... 7个以上
java.lang.classnotfoundexception:在org.apache.hadoop.conf.configuration.getclassbyname(配置)中找不到class cascading.tap.hadoop.io.multiinputsplit。java:1493)
注意:1。我在我的windows机器上运行这个,hadoop安装在不同的盒子上。2我正在使用cloudera发行版来实现hadoop,即CDH4。

8ehkhllq

8ehkhllq1#

有问题了。cdh 4.2与级联2.1有问题。所以改成了CDH4.1,对我很有效。

vwoqyblh

vwoqyblh2#

您的属性文件为空,因此可能是群集上此作业的配置已关闭。您必须提供用于 HadoopFlowController . 调用时发现的hadoop配置文件中包含的信息 new Configuration 属于你的 Properties 对象-例如 fs.default.name=file://// 等等,我想当你在“连线”上运行一个级联作业时,情况更是如此。

相关问题