【发布时间】:2015-04-11 07:24:46
【问题描述】:
我是 hadoop/yarn/mapreduce 的新手。
我正在尝试使用 MapReduce 作业将文档从 Cassandra 索引到 ElasticSearch。我看到大约 700 个拆分,但我所有的文档都被第 16 个拆分索引(grep 了用户日志)。一旦没有更多要索引的文档,有没有办法以编程方式 (Java) 优雅地关闭剩余任务?
【问题讨论】:
我是 hadoop/yarn/mapreduce 的新手。
我正在尝试使用 MapReduce 作业将文档从 Cassandra 索引到 ElasticSearch。我看到大约 700 个拆分,但我所有的文档都被第 16 个拆分索引(grep 了用户日志)。一旦没有更多要索引的文档,有没有办法以编程方式 (Java) 优雅地关闭剩余任务?
【问题讨论】:
您可以在 map 方法中使用以下代码获取映射器的任务 ID 和输入拆分。
JobConf.get("mapred.task.id");
FileSplit fileSplit = (FileSplit)context.getInputSplit();
String filename = fileSplit.getPath().getName()
使用上面的文件名,您将获得输入拆分的文件名,您可以使用它来终止所有不需要执行的任务。
请在杀死几个地图任务后检查作业是否成功完成,我认为作业应该失败。我认为与其杀死 map 任务,不如只输入您需要为 mapreduce 程序编制索引的文件。
【讨论】: