Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在hadoop mapreduce中跳过读取文件头_Hadoop - Fatal编程技术网

如何在hadoop mapreduce中跳过读取文件头

如何在hadoop mapreduce中跳过读取文件头,hadoop,Hadoop,我正在学习使用java的hadoop mapreduce,我有一个示例文件,其中包含如下数据,我如何跳过处理该文件中的头行..因为当我看到mapper输入时,它也在考虑头 卷号|学校名称|姓名|年龄|性别|班级|科目|分数 1 | xyz | pqr | abc | 10 | M | 1 | science | 98如果您使用单个映射器运行,则可以在If条件下使用计数器。如果正在运行多个映射程序,请在If条件下检查标题字符串。因为您已经知道标题的外观,所以可以跳过标题。这种方法使应用程序更慢 @

我正在学习使用java的hadoop mapreduce,我有一个示例文件,其中包含如下数据,我如何跳过处理该文件中的头行..因为当我看到mapper输入时,它也在考虑头

卷号|学校名称|姓名|年龄|性别|班级|科目|分数


1 | xyz | pqr | abc | 10 | M | 1 | science | 98

如果您使用单个映射器运行,则可以在If条件下使用计数器。如果正在运行多个映射程序,请在If条件下检查标题字符串。

因为您已经知道标题的外观,所以可以跳过标题。这种方法使应用程序更慢

@Override
public void map(LongWritable key, Text value, OutputCollector<Text, Text> output, Reporter reporter) throws IOException{
      String[] row = value.toString();

      if( row.equals( "roll no|school name|name|age|Gender|class|subject|marks") )
            return;

      //NOW YOU ARE HEADER FREE 
      //do some operations depending on your needs..

}
@覆盖
公共void映射(LongWritable键、文本值、OutputCollector输出、Reporter报告器)引发IOException{
字符串[]行=value.toString();
if(行等于(“卷号|学校名称|姓名|年龄|性别|班级|科目|分数”))
返回;
//现在你自由了
//根据需要进行一些操作。。
}

您用于此数据的文件格式是什么?最好的解决方案是编写一个自定义的
InputFormat
,丢弃每个文件的第一行。我使用的文件格式是.txt文件,如何创建自定义的InputFormat,您能举个例子吗