用户定制输入/输出格式 ν Recordreader:对于一个数据输入格式,都需要有一个 对应的 Recordreader。 Recordreade主要用于将爱那 个一个文件中的数据记录分拆成具体的键值对,传给Map 函数。例如: TextInputFormat的默认 RecordReader为 Line recordreader, Key valueInputFormat的默认 Record Reader i Key valueLine record reader o ν除此之外,系统还提供很多输入格式,例如: AutolnputFormat, Combine fileInputForma==
RecordReader:对于一个数据输入格式,都需要有一个 对应的RecordReader。 RecordReader主要用于将爱那 个一个文件中的数据记录分拆成具体的键值对,传给Map 函数。例如: TextInputFormat的默认RecordReader为 Line RecordReader, KeyValueInputFormat的默认 RecordReader为KeyValueLine RecordReader。 除此之外,系统还提供很多输入格式,例如: AutoInputFormat, CombineFileInputForma等
用户定制数据输入格式与 Recordreader 假设需要定制 FileNameLocInput Format与 FileNameLocRecordreader,以便产生 Filename@ pLineoffset主键值,则可定制如下代码 pubic class FileNameLocInputFormat extends FileInputFormat<Text, Text> @Override public RecordReader<Text, Text> create Record Reader(InputSplit split, TaskAttempt Context context) File NameLocRecordReader fnrr= new FileNameLocRecord Rader fnrr. initialize(split, context)
假设需要定制 FileNameLocInputFormat 与 FileNameLocRecordReader, 以便产生 FileName@LineOffset主键值,则可定制如下代码 pubic class FileNameLocInputFormat extends FileInputFormat<Text, Text> { @Override public RecordReader<Text, Text> createRecordReader(InputSplit split, TaskAttemptContext context) { FileNameLocRecordReader fnrr = new FileNameLocRecordRader(); fnrr.initialize(split, context); ………… } }
用户定制数据输入格式与 Recordreader pubic class FileNameLocRecordReader extends RecordReader <Text, Text> String FileName Line Record Reader Irr= new Line Record reader @Override public Text get CurrnetKeyo return new Text( +FileName+@"+Irr. get CurrentKey0+) @Override public void initialize(InputSplit argo, TaskAttemptContext arg)
pubic class FileNameLocRecordReader extends RecordReader<Text, Text> { String FileName; LineRecordReader lrr = new LineRecordReader(); @Override public Text getCurrnetKey() { return new Text(“+FileName+”@”+lrr.getCurrentKey()+”); } @Override public void initialize(InputSplit arg0, TaskAttemptContext arg1) { ………………………. } }
用户定制输入/输出格式 Hadoop内置的数据输出格式与 Recordwriter Hadoop提供了丰富的内置数据输出格式。最常用的是 TextoutputFormat,也是系统默认的输出格式,可以 将计算结果以key+t+vaue的形式逐行输入到文件 中 。数据输出格式也提供一个对应的 Recordwriter,以便系 统明确输出结果写到文件的具体格式。 TextoutputFormat的默认 Recordwriter是 LineRecordwriter
Hadoop内置的数据输出格式与RecordWriter ◦ Hadoop提供了丰富的内置数据输出格式。最常用的是 TextOutputFormat,也是系统默认的输出格式,可以 将计算结果以key + \t +value的形式逐行输入到文件 中。 ◦ 数据输出格式也提供一个对应的RecordWriter,以便系 统明确输出结果写到文件的具体格式。 TextOutputFormat的默认RecordWriter是 LineRecordWriter