1. Filter(过滤) 和 Project(映射)
在传统的 OLAP 系统中,在进行 Join 的时候使用过滤和映射会极大的提高性能。同样的,在 Hadoop 中使用 Filter 和 Projection 同样可以提高效率,由于减少了一个管道需要处理的数据量。在Hadoop中减少处理的数据量是至关重要的,尤其当需要通过网络和本地磁盘进行处理的时候。我们都知道,MapReduce 的shuffle 过程会将数据通过网络写入到磁盘中,所以拥有更少的数据就意味着Job 和 MapReduce 框架的工作量也就越少,这样Job的数据传输也会更快,CPU、磁盘、网络设备的压力也会减少。
使用 filters 和 projection 来减少数据大小
Filter 和 projections 最后靠近数据源进行执行;在MapReduce中,最好在mapper中执行。以下代码显示了一个排除30岁以下的用户,并且只映射他们的姓名和状态:
public static class JoinMap extends Mapper {
@Override
protected void map(LongWritable offset, Text value, Context context)
throws IOException, InterruptedException {
User user = User.fromText(value);