0

这是我连接到 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.runOldMapper(MapTask.java:389) 的 org.apache.hadoop.mapred.MapTask.getSplitDetails(MapTask.java:348) 中找不到org.apache.hadoop.mapred.MapTask.run(MapTask.java:333) at org.apache.hadoop.mapred.Child$4.run(Child.java:268) at java.security.AccessController.doPrivileged(Native Method)在 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:在 org.apache.hadoop.conf.Configuration.getClassByName(Configuration.java:1493) 的 org.apache 中找不到类 cascading.tap.hadoop.io.MultiInputSplit。 hadoop.mapred.MapTask.getSplitDetails(MapTask.java:346) ...还有 7 个

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

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

4

2 回答 2

0

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

于 2013-04-16T20:23:14.897 回答
0

得到了问题。CDH 4.2 与级联 2.1 存在问题。所以改为CDH 4.1,它对我有用。

于 2013-09-09T08:08:56.883 回答