Hive的自定义函数与优化

Hive的自定义函数与优化

1,自定义函数

  • UDF
    • 一进一出

    • 一次处理一行返回一行

  • UDAF
    • 聚合函数
    • 一次处理多行返回一行

2.数据的分桶

  • 分区
    • 可以将常用的属性进行分区,会自动创建文件夹
    • 然后根据相同分区的数据会放在同一个文件夹中,如果按照分区条件查询,只需要查询指定的文件目录
    • 如果分区的数据散列比较好,这时分区就会产生很多个分区,而且每个分区内的数据寥寥无几
    • 所以分区比较适合列值比较固定的
  • 分桶
    • 算法类似于Map中的partation操作(计算Key的Hash然后对ReduceNum取余)
    • 分区可以通过文件夹的方式将数据存放在不同的目录,但并不是所以的数据都适合分区
    • 那么我们可以将不合适分区的数据(散列均匀)进行分桶
    • 分桶一般会使用文件来管理数据
      • abs(hash(col))%bucketNum = x
      • 那么相同桶的数据会存放在同一个文件
    • 如果分桶的列值范围比较固定,不推荐使用分桶,即使桶再多也无法分出(例如:性别,省份)
  • 总结
    • 分区是使用文件夹进行管理
    • 分桶是使用文件进行管理
  • 优点
    • 减少了查询范围
    • 数据抽样
    • Map-Join(两张表可以同时对一个常用查询列做相同个数的桶,那么比较的时候只需要一一对应即可)
1,zhangsan1,g1,clazz1
2,zhangsan2,g2,clazz2
3,zhangsan3,g3,clazz3
4,zhangsan4,g0,clazz4
5,zhangsan5,g1,clazz5
6,zhangsan6,g2,clazz6
7,zhangsan7,g3,clazz7
8,zhangsan8,g0,clazz8
9,zhangsan9,g1,clazz9
10,zhangsan10,g2,clazz0
11,zhangsan11,g3,clazz1
12,zhangsan12,g0,clazz2
13,zhangsan13,g1,clazz3
14,zhangsan14,g2,clazz4
15,zhangsan15,g3,clazz5
16,zhangsan16,g0,clazz6
17,zhangsan17,g1,clazz7
18,zhangsan18,g2,clazz8
19,zhangsan19,g3,clazz9
20,zhangsan20,g0,clazz0
21,zhangsan21,g1,clazz1
22,zhangsan22,g2,clazz2
23,zhangsan23,g3,clazz3
24,zhangsan24,g0,clazz4
25,zhangsan25,g1,clazz5
26,zhangsan26,g2,clazz6
27,zhangsan27,g3,clazz7
28,zhangsan28,g0,clazz8
29,zhan
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值