您的位置:首页 > 编程语言 > Java开发

使用java操作hive2

2016-06-06 14:51 567 查看
(一)自定义函数:,实现自定时间格式的转换

1\编写java类StringToDate

2\编译成为jar包

3\上传jar至hive的lib目录下或者其他目录

4\使用jar

   A\首先进入jdbc:hive2://h15:10000>

   B\添加jar包到内存中:>>add jar /opt/sxt/data/testhive.jar;

   C\查看是否上传成功: >>list jar;

   D\**创建一个函数:>>create function stringdate as ‘jar中的类名,如果有包,则需要添加全路径’;

   E\查看是否已经创建成功:>>show functions;    注意:一般不会看到,因为hive的bug

   F\使用自定义函数:>>select stringdate(‘2016-04-14 12:12:12’,’yyyy-MM-dd HH:mm:ss’) from person3;

 

StringToDate:

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

import org.apache.hadoop.hive.serde2.io.TimestampWritable;

import org.apache.hadoop.io.Text;

import java.text.ParseException;

import java.text.SimpleDateFormat;

import java.util.Date;

/**

 * Created by root on 2016/4/14 0014.

 */

public class StringToDate extends UDF{

    public TimestampWritable evaluate(final Text s,final Text fmt) throws ParseException {

        SimpleDateFormat sf = new SimpleDateFormat(fmt.toString());

        Date parse = sf.parse(s.toString());

        TimestampWritable tw = new TimestampWritable();

        tw.setTime(parse.getTime());

        return tw;

    }

}

(二)java统计hive表person2的总条数(确保hive下有mysql的驱动包)

(1)步骤:导入jar包--》commons-logging-1.1.3、hadoop-common-2.5.2、hive-exec-1.2.1、hive-jdbc-1.2.1、hive-jdbc-1.2.1-standalone、

                  hive-service-1.2.1、libfb303-0.9.2、slf4j-api-1.6.2

(2)编写java代码:如下

import java.sql.*;

public class TestHive {

    public static void main(String[] args) throws SQLException {

        try {

            Class.forName("org.apache.hive.jdbc.HiveDriver");

        } catch (ClassNotFoundException e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

            System.exit(1);

        }

        Connection con = DriverManager.getConnection("jdbc:hive2://192.168.142.115:10000/default", "root", "");

        Statement stmt = con.createStatement();

        ResultSet resultSet = stmt.executeQuery("select count(*) from person2");

        if(resultSet.next()){

            System.out.println(resultSet.getInt(1));

        }

    }

}

 

(3)启动hive2

1\先在另一个h15窗口上启动hive2:命令>>>hive  --service hiveserver2

再在另一个h15窗口执行:#beeline

2\进入jdbc的链接方式:

hiveserver2默认端口是10000     账户:root 密码为空 

#!connect jdbc:hive2://192.168.142.115:10000 root  org.apache.hive.jdbc.HiveDriver

(4)运行java类,查看结果
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: