[Hive基础]-- 使用java操作hive2
原创
©著作权归作者所有:来自51CTO博客作者high2011的原创作品,请联系作者获取转载授权,否则将追究法律责任
(一)自定义函数:,实现自定时间格式的转换
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;
stringdate as ‘jar中的类名,如果有包,则需要添加全路径’;
E\查看是否已经创建成功:>>show functions; 注意:一般不会看到,因为hive的bug
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类,查看结果