AmosCloud

Library

Have a Question?

If you have any question you can ask below or enter what you are looking for!

2020年5月20日_day12_Hive_Hbase

Hive自定义函数

  • 需求:03/Nov/2019 -> 2019-11-03
  • Hive现有的函数库不能支持这个操作
  • 我们可以自定义一个函数,将他注册到Hive的函数库中,就可以在sql中直接使用
  1. 导入依赖

        <dependency>
            <groupId>org.apache.hive</groupId>
            <artifactId>hive-exec</artifactId>
            <version>1.2.2</version>
        </dependency>
  2. 自定义一个类继承
    org.apache.hadoop.hive.ql.exec.UDF

  3. 自己写一个方法 方法名必须是evaluate 参数和返回值根据自己的需要填写
    方法体就是函数处理的过程

import org.apache.hadoop.hive.ql.exec.UDF;

import java.text.SimpleDateFormat;
import java.util.Locale;

public class DateTools extends UDF {
    private static SimpleDateFormat sdf_parse = new SimpleDateFormat("dd/MMM/yyyy", Locale.US);

    private static SimpleDateFormat sdf2_format = new SimpleDateFormat("yyyy-MM-dd");

    public String evaluate( String str) {
        try {
            return sdf2_format.format(sdf_parse.parse(str));
        } catch (Exception e) {
            return "0000-00-00";
        }
    }
}
  1. 设置main-calss,打jar包

  2. 上传到HDFS集群

  3. 在hive中注册函数

CREATE temporary FUNCTION date_convert AS 'osix.hive.DateTools' USING JAR 'hdfs://test01:9000/lib/udf1.jar';
  • Hadoop 创始人 dog cutting 根据google的三篇论文
  1. GFS 分布式文件系统 -> Hadoop(HDFS)
  2. MapReduce 分布式计算框架 -> Hadoop(MapReduce)
  3. BigTable 分布式数据库 -> Hbase

zookeeper集群搭建

  • 上传,解压

  • 修改配置文件 zoo.cfg

    1. 在zookeeper安装目录下创建一个data目录
      dataDir=ZOOKEEPER_HOME/data

    2. 设置集群之间的主机和通信端口
      server.每个节点的id=id对应的节点主机名或ip:通信端口:选举端口
      有几台机器就添加几条

    3. dataDir下创建一个myid文件
      myid文件中填入自己主机对应的id号

    4. 分发安装文件到所有节点
      并且修改myid为自己的id

zookeeper集群启动

  • zkServer.sh start

  • 启动顺序为1 2 3

    • 观察leader为2号节点
  • 启动顺序为3 2 1

    • 观察leader为3号节点
  • 启动顺序为2 1 3

    • 观察leader为2号节点
  • zookeeper选举机制
    半数以下不选举-启动节点到达半数以上时,选举节点id最大的作为leader

发表评论

电子邮件地址不会被公开。 必填项已用*标注