将分片split的信息写入到job.split和splitmetainfo文件中
2013-06-25 20:42
190 查看
int writeNewSplits(JobContext job, Path jobSubmitDir) throws IOException,
InterruptedException, ClassNotFoundException {
Configuration conf = job.getConfiguration();
InputFormat<?, ?> input =
ReflectionUtils.newInstance(job.getInputFormatClass(), conf);
List<InputSplit> splits = input.getSplits(job);//获得分片InputSplit
T[] array = (T[]) splits.toArray(new InputSplit[splits.size()]);
// sort the splits into order based on size, so that the biggest
// go first
Arrays.sort(array, new SplitComparator());
JobSplitWriter.createSplitFiles(jobSubmitDir, conf,
jobSubmitDir.getFileSystem(conf), array);
return array.length;
}
该函数的作用是将所有分片(InputSplit)的信息写入到两个文件,job.split
和job.splitmetainfo文件中。由createSplitFiles函数完成核心功能。
所以writeNewSplits这个函数名称的含义是说将分片信息写入到持久存储的文件中,
而所写内容实际上包括分片的原始数据和分片的元数据两部分,分别写到两个文件中
public static <T extends InputSplit> void createSplitFiles(Path jobSubmitDir,
Configuration conf, FileSystem fs, T[] splits)
throws IOException, InterruptedException {
//创建job.split文件,并以流的方式打开该文件
FSDataOutputStream out = createFile(fs,
JobSubmissionFiles.getJobSplitFile(jobSubmitDir), conf);
//将所有分片(InputSplit的实例)的信息都写入job.split文件中
//同时会返回各个分片的原数据信息,放入info数组中
SplitMetaInfo[] info = writeNewSplits(conf, splits, out);
//关闭job.split文件
out.close();
//将info中的split元数据信息写入到job.splitmetainfo文件中
writeJobSplitMetaInfo(fs,JobSubmissionFiles.getJobSplitMetaFile(jobSubmitDir),
new FsPermission(JobSubmissionFiles.JOB_FILE_PERMISSION), splitVersion,
info);
}
InterruptedException, ClassNotFoundException {
Configuration conf = job.getConfiguration();
InputFormat<?, ?> input =
ReflectionUtils.newInstance(job.getInputFormatClass(), conf);
List<InputSplit> splits = input.getSplits(job);//获得分片InputSplit
T[] array = (T[]) splits.toArray(new InputSplit[splits.size()]);
// sort the splits into order based on size, so that the biggest
// go first
Arrays.sort(array, new SplitComparator());
JobSplitWriter.createSplitFiles(jobSubmitDir, conf,
jobSubmitDir.getFileSystem(conf), array);
return array.length;
}
该函数的作用是将所有分片(InputSplit)的信息写入到两个文件,job.split
和job.splitmetainfo文件中。由createSplitFiles函数完成核心功能。
所以writeNewSplits这个函数名称的含义是说将分片信息写入到持久存储的文件中,
而所写内容实际上包括分片的原始数据和分片的元数据两部分,分别写到两个文件中
public static <T extends InputSplit> void createSplitFiles(Path jobSubmitDir,
Configuration conf, FileSystem fs, T[] splits)
throws IOException, InterruptedException {
//创建job.split文件,并以流的方式打开该文件
FSDataOutputStream out = createFile(fs,
JobSubmissionFiles.getJobSplitFile(jobSubmitDir), conf);
//将所有分片(InputSplit的实例)的信息都写入job.split文件中
//同时会返回各个分片的原数据信息,放入info数组中
SplitMetaInfo[] info = writeNewSplits(conf, splits, out);
//关闭job.split文件
out.close();
//将info中的split元数据信息写入到job.splitmetainfo文件中
writeJobSplitMetaInfo(fs,JobSubmissionFiles.getJobSplitMetaFile(jobSubmitDir),
new FsPermission(JobSubmissionFiles.JOB_FILE_PERMISSION), splitVersion,
info);
}
相关文章推荐
- 将分片split的信息写入到job.split和splitmetainfo文件中
- 将分片split的信息写入到job.split和splitmetainfo文件中
- 将分片split的信息写入到job.split和splitmetainfo文件中
- 将分片split的信息写入到job.split和splitmetainfo文件中
- 将分片split的信息写入到job.split和splitmetainfo文件中
- 将分片split的信息写入到job.split和splitmetainfo文件中
- 将分片split的信息写入到job.split和splitmetainfo文件中
- 将分片split的信息写入到job.split和splitmetainfo文件中
- 将分片split的信息写入到job.split和splitmetainfo文件中
- 将分片split的信息写入到job.split和splitmetainfo文件中
- 将分片split的信息写入到job.split和splitmetainfo文件中
- 将分片split的信息写入到job.split和splitmetainfo文件中
- 将分片split的信息写入到job.split和splitmetainfo文件中
- 将分片split的信息写入到job.split和splitmetainfo文件中
- 将分片split的信息写入到job.split和splitmetainfo文件中
- PHP error_log()将错误信息写入一个文件(定义和用法)
- JAVA如何以追加的方式向文件中写入信息
- 【C语言】文件读取写入信息(二进制方式)
- 使用Python读取和写入mp3文件的id3v1信息
- 将数据一行一行追加读入txt文件,以行的形式(将信息一条一行读入txt文件,追加继续写入)