Filter、Project及Pushdowns实例分析

发布时间:2022-01-04 10:32:54 作者:柒染
来源:亿速云 阅读:141

今天就跟大家聊聊有关Filter、Project及Pushdowns实例分析,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

1. Filter(过滤) 和 Project(映射)   
在传统的 OLAP 系统中,在进行 Join 的时候使用过滤和映射会极大的提高性能。同样的,在 Hadoop 中使用 Filter 和 Projection 同样可以提高效率,由于减少了一个管道需要处理的数据量。在Hadoop中减少处理的数据量是至关重要的,尤其当需要通过网络和本地磁盘进行处理的时候。我们都知道,MapReduce 的shuffle 过程会将数据通过网络写入到磁盘中,所以拥有更少的数据就意味着Job 和 MapReduce  框架的工作量也就越少,这样Job的数据传输也会更快,CPU、磁盘、网络设备的压力也会减少。

Filter、Project及Pushdowns实例分析
使用 filters 和 projection 来减少数据大小

Filter 和 projections 最后靠近数据源进行执行;在MapReduce中,最好在mapper中执行。以下代码显示了一个排除30岁以下的用户,并且只映射他们的姓名和状态:

   
     
   
   
   
public static class JoinMap extends Mapper<LongWritable, Text, Text, Text> {                  @Override                  protected void map(LongWritable offset, Text value, Context context)                      throws IOException, InterruptedException {              
                   User user = User.fromText(value);                    if (user.getAge() >= 30) {                      context.write(new Text(user.getName()),                          new Text(user.getState()));                    }                  }                }            
在 Join 中使用 filter 需要注意的是,并不是所有连接的数据集都包含你需要过滤的字段。对于这种情况,你需要使用Bloom filter 方法。
2. Pushdowns
谓词下推(predicate pushdown)属于逻辑优化。优化器可以将谓词过滤下推到数据源,从而使物理执行跳过无关数据。在使用Parquet的情况下,更可能存在文件被整块跳过的情况,同时系统还通过字典编码把字符串对比转换为开销更小的整数对比。在关系型数据库中,谓词则被下推到外部数据库用以减少数据传输。
通过以下这张图,我们可以发现,谓词下推在逻辑层面可以理解为利用where 条件中的过滤条件将无用的数据进行筛选掉最终得到需要的行列。
Filter、Project及Pushdowns实例分析
投影和谓词下推通过对存储格式的映射和谓词的推送而进一步来进行过滤。针对 Parquet 这样的存储格式,我们可以直接跳过整个记录或者整个块,这样极大的提高了 Job 的性能并且减少了不必要的开销。
Filter、Project及Pushdowns实例分析
这里需要注意的是,Avro 是基于行列的存储格式。

需要知道的:
1. 对 Inner Join 来说,Hive 只支持等值连接,不支持不等值连接。因为不等值连接在 MapReduce Job 转换起来很麻烦。
2. 虽然 Hive 不支持等值连接,但是在 Cross Join 和 Where条件中仍然可以使用。下面是 Cross Join发生的条件:

看完上述内容,你们对Filter、Project及Pushdowns实例分析有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。

推荐阅读:
  1. Project Server 2016 权限模式
  2. Project:如何将资源添加到Project Web App

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

filter project

上一篇:如何实现uni-app微信小程序授权登录

下一篇:JS的script标签属性有哪些

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》