您好我有一个从HBase读取记录并写入文本文件的应用程序。 应用程序正在按预期工作,但在对大数据进行测试时,需要1.20小时才能完成工作。 以下是我的申请详情
我使用自定义分区程序进行数据隔离。 我有194分区和减速器,所有减速器都很快完成,除了最后两个由于条件而具有非常大的记录数。
我不知道如何处理这种情况。
我的条件是这样两个分区将获得大量的记录,我也无法改变它。
所有减速器在3分钟内完成,但由于整体工作需要30分钟的时间。
这是我的实施
hbaseConf.set("mapreduce.map.output.compress", "true");
hbaseConf.set("mapreduce.map.output.compress.codec", "org.apache.hadoop.io.compress.SnappyCodec");
FileOutputFormat.setOutputCompressorClass(job, GzipCodec.class);
我的分区逻辑在这里
if (str.contains("Japan|^|2017|^|" + strFileName + "")) {
return 0;
} else if (str.contains("Japan|^|2016|^|" + strFileName + "")) {
return 1;
} else if (str.contains("Japan|^|2015|^|" + strFileName + "")) {
return 2;
} else if (str.contains("Japan|^|2014|^|" + strFileName + "")) {
return 3;
} else if (str.contains("Japan|^|2013|^|" + strFileName + "")) {
return 4;
}