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