hive自定义分区器

Hive自定义分区器流程

1.自定义类

实现org.apache.hadoop.mapred.Partitioner(必须为这个,Hive中使用的是老的API)接口

package com.ailibaba;



import org.apache.hadoop.hive.ql.io.HiveKey;

import org.apache.hadoop.io.BytesWritable;

import org.apache.hadoop.mapred.JobConf;

import org.apache.hadoop.mapred.Partitioner;
public class MyPartitioner implements Partitioner<HiveKey, BytesWritable> {

    @Override

    public int getPartition(HiveKey s, BytesWritable s2, int numPartitions) {

        return 0;

    }

    @Override

    public void configure(JobConf job) {

    }

}

2.打包到集群/opt/module/hive/lib/目录下

3.在Hive中进行测试

3.1 添加jar包

add jar /opt/module/hive/lib/partition.jar;

3.2 设置Hive中使用自定义的分区器

set hive.mapred.partitioner = com.ailibaba.MyPartitioner;

3.3 修改Reducer数量

set mapreduce.job.reduces=3;

3.4 执行SQL进行测试

insert overwrite local directory ‘/opt/module/data/distribute-result’ select * from emp distribute by deptno sort by empno desc;

3.5 查看最终结果

-rw-r–r--. 1 ailibaba ailibaba 707 11月 1 13:13 000000_0

-rw-r–r--. 1 ailibaba ailibaba 0 11月 1 13:13 000001_0

-rw-r–r--. 1 ailibaba ailibaba 0 11月 1 13:13 000002_0

发现只有0号分区有数据。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值