怎么在javajava中读取配置文件件中配置Hive的数据源

当前位置:
Java使用JDBC连接Hive(新版本)API打包
浏览次数:1722
Java使用JDBC连接Hive(新版本)API封装网上找了很多封装的API,发现都是过时了的,运行报各种错误,经过了几天的调错,终于可以使用java代码操作hive了首先看看所需的包所有的分析都在代码里面注意:网上很多代码对于DDL都执行 res = stmt.executeQuery(sql);&这是错的,因为新版本DDL不能返回结果集,会报如下错误&java.sql.SQLException: The query did not generate a result set!&所以只能写 stmt.execute(sql);&它会返回一个boolean值&只有对于DML才能返回结果集&具体看下面的代码大家就懂了,不信的话大家可以试试,我的是1.1.1版本 com.berg.hive.test1. java.sql.C
java.sql.DriverM
java.sql.ResultS
java.sql.SQLE
java.sql.S
org.apache.log4j.L
String driverName = ;
String url = ;
String user = ;
String password = ;
String sql = ;
Logger log = Logger.getLogger(HiveJdbcCli.class);
(String[] args) {
Connection conn = ;
Statement stmt = ;
conn = getConn();
stmt = conn.createStatement();
String tableName = dropTable(stmt);
createTable(stmt, tableName);
showTables(stmt, tableName);
describeTables(stmt, tableName);
loadData(stmt, tableName);
selectData(stmt, tableName);
countData(stmt, tableName);
(ClassNotFoundException e) {
e.printStackTrace();
log.error(driverName + , e);
System.exit();
(SQLException e) {
e.printStackTrace();
log.error(, e);
System.exit();
(conn != ) {
conn.close();
(stmt != ) {
stmt.close();
(SQLException e) {
e.printStackTrace();
(Statement stmt, String tableName)
SQLException {
System.out.println( + sql);
res = stmt.executeQuery(sql);
System.out.println();
(res.next()) {
System.out.println( + res.getString());
(Statement stmt, String tableName)
SQLException {
System.out.println( + sql);
res = stmt.executeQuery(sql);
System.out.println();
(res.next()) {
System.out.println(res.getInt() +
+ res.getString());
(Statement stmt, String tableName)
SQLException {
String filepath = ;
+ filepath +
System.out.println( + sql);
stmt.execute(sql);
(Statement stmt, String tableName)
SQLException {
System.out.println( + sql);
res = stmt.executeQuery(sql);
System.out.println();
(res.next()) {
System.out.println(res.getString() +
+ res.getString());
(Statement stmt, String tableName)
SQLException {
+ tableName + ;
System.out.println( + sql);
res = stmt.executeQuery(sql);
System.out.println();
(res.next()) {
System.out.println(res.getString());
(Statement stmt, String tableName)
SQLException {
+ tableName
stmt.execute(sql);
String (Statement stmt)
SQLException {
String tableName = ;
stmt.execute(sql);
Connection ()
ClassNotFoundException,
SQLException {
Class.forName(driverName);
Connection conn = DriverManager.getConnection(url, user, password);
[广告]赞助链接:
关注公众号:Mcbang_com 了解更多精彩,关注:chayuqing_com 娱乐资讯早知道!
看完这篇文章,你的感受如何?没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!集算器协助Java处理多样性数据源之Hive
&&&&Java使用jdbc连接Hive比较简单,但是Hive的计算能力相对于其它数据库的SQL而言较弱,要完成非常规的计算需要将数据取出后用Java进一步计算,编程比较麻烦。
&&&&使用集算器配合Java编程,可以减少Java使用Hive时要进行复杂计算工作量。下面我们通过例子来看一下具体作法:Hive中的orders表中保存了订单的明细数据,需要计算同期比和比上期。数据如下:
&&&&ORDERID
CLIENT SELLERID AMOUNT ORDERDATE
UJRNP 17 392
SJCH 6 /9 15:28
UJRNP 16 /11/5 15:28
PWQ 9 /11/8 15:28
PWQ 11 /12 15:28
HANAR 18 /7 15:28
EGU 2 /11/6 15:28
VILJX 7 /9 15:28
JAYB 14 /11/12 15:28
JAXE 19 /11/12 15:28
SJCH 7 /11/10 15:28
QUICK 11 /11/13 15:28
HL 12 /11/21 15:28
JAYB 1 /16 15:28
MIP 16 /19 15:28
&&&&比上期是指用当期数据和上期数据进行比较,以月作为时间间隔,比如用4月份的销售额除以3月份的销售额,这称为4月份的比上期。同期比是指用当期数据和上一周期的同期数据进行比较,比如2014年4月份的销售额除以2013年4月份的销售额。因为Hive没有窗口函数,所以难以完成这个计算需求,必须编写嵌套的SQL子查询,而Hive对子查询的支持也不够完备,这个计算目标经常需要放在外部实现。集算器esProc则可以比较容易的实现,具体代码如下:
&&&A1:使用定义好的Hive数据源,通过jdbc连接数据库。
&&&&A2:按时间段从数据库查询数据,begin和end是外部参数,比如begin=”
00:00:00&P,end=” 00:00:00&P(即当天日期,可用now()函数获取)。
&&&&A3:对订单按照年份和月份进行分组,并汇总求得每月的销售额。
&&&&A4:增加一个新的字段lrr,即按月比上期,其表达式为mAmount/mAmount[-1]。代码中mAmount代表当期销售额,mAmount[-1]代表上期销售额。需要注意的是,初始月份的比上期值为空(即2011年1月)。
&&&&A5:将A4按照月、年排序,以便计算同期比。完整的代码应当是:=A4.sort(m,y),由于A4本来就是按年排序的,因此只需按月排序就可以达到目的,即A4.sort(m),这样性能也高。A6:
增加一个新的字段yoy,即月销售额的同期比,其表达式为if(m==m[-1],mAmount/mAmount[-1],null),这表示月份相同时才进行同期比计算。需要注意的是,初始年份(即2011年)各月份的同期比为空。
&&&&A7:将A6按照年逆序月正序进行排序。需要注意的是,数据只到2014年7月为止。结果如下:
&&A8:关闭Hive数据库连接。
&&&&A9:返回结果。
&&&&在Java程序中使用esProc
JDBC调用这段程序获得结果的代码如下:(将上述esProc程序保存为test.dfx):
&&&&//建立esProc
jdbc连接&&&&&Class.forName(“com.esproc.jdbc.InternalDriver”);
DriverManager.getConnection(“jdbc:esproc:local://”);&&&&&//调用esProc
程序(存储过程),其中test是dfx的文件名&&&&&st
=(com.esproc.jdbc.InternalCStatement)con.prepareCall(“call
test(?,?)”);&&&&&//设置参数
&&&&&st.setObject(1,”
00:00:00&P);//begin&&&&&st.setObject(1,”
00:00:00&P);//end&&&&&//执行esProc存储过程
&&&&&st.execute();
&&&&&//获取结果集
&&&&&ResultSet
set = st.getResultSet();
&&&&集算器访问Hive和访问普通数据库一样,配好Hive的JDBC即可,这里不再赘述。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。人气:3187618
访问用户量:3062
笔记经验:
总积分:1409
级别:普通会员
搜索本笔记
ta的交流分类
ta的全部笔记
浏览(166368)|(2)
&&交流分类:|笔记分类:
第一部分:软件准备与环境规划
Hadoop环境介绍
oHadoop安装路径
o/home/test/Desktop/hadoop-1.0.0/
oHadoop 元数据存放目录
o/home/test/data/core/namenode
oHadoop 数据存放路径
o/home/test/data/core/datanode
Hive环境规划
oHive安装路径
o/home/test/Desktop/
oHive数据存放路径
o/user/hive/warehouse
oHive元数据
o第三方数据库
oderby mysql
ojava 1.6.0_27
ohadoop-1.0.0.tar
ohive-0.8.1.tar
第二部分:Hive项目介绍
Hive配置文件介绍
ohive-site.xml&&&&& hive的配置文件
ohive-env.sh&&&&&&& hive的运行环境文件
ohive-default.xml.template& 默认模板
ohive-env.sh.template&&&& hive-env.sh默认配置
ohive-exec-log4j.properties.template&& exec默认配置
o&hive-log4j.properties.template log默认配置
hive-site.xml
& &name&javax.jdo.option.ConnectionURL&/name&
&value&jdbc:mysql://localhost:3306/hive?createData
baseIfNotExist=true&/value&
& &description&JDBC connect string for a JDBC
metastore&/description&
&/property&
&property&
&name&javax.jdo.option.ConnectionDriverName&/name&
&&& &value&com.mysql.jdbc.Driver&/value&
& &description&Driver class name for a JDBC metastore&/description&
&/property&
&property&
&name&javax.jdo.option.ConnectionUserName&/name&
&&& &value&root&/value&
&& &description&username to use against metastore database&/description&
&/property&
&property&
&name&javax.jdo.option.ConnectionPassword&/name&
&& &value&test&/value&
&& &description&password to use against metastore database&/description&
&/property&
hive-env.sh
o配置Hive的配置文件路径
oexport HIVE_CONF_DIR= your path
o配置Hadoop的安装路径
oHADOOP_HOME=your hadoop home
第三部分:使用Derby数据库的安装方式
什么是Derby安装方式
oApache Derby是一个完全用java编写的数据库,所以可以跨平台,但需要在JVM中运行
oDerby是一个Open source的产品,基于Apache License 2.0分发
o即将元数据存储在Derby数据库中,也是Hive默认的安装方式
otar&zxvf& hive-0.8.1.tar& /home/test/Desktop
o建立软连接
oln –s hive-0.8.1 hive
o添加环境变量
oexport HIVE_HOME=/home/test/Desktop/hive
oexport PATH=….HIVE_HOME/bin:$PATH:.
o进入hive/conf目录
o依据hive-env.sh.template,创建hive-env.sh文件
ocp& hive-env.sh.template hive-env.sh
o修改hive-env.sh
o指定hive配置文件的路径
oexport HIVE_CONF_DIR=/home/test/Desktop/hive/conf
o指定Hadoop路径
o&HADOOP_HOME=/home/test/Desktop/hadoop &
hive-site.xml
&property&
& &name&javax.jdo.option.ConnectionURL&/name&
&value&jdbc:derby:;databaseName=metastore_create=true&/value&
& &description&JDBC connect string for a JDBC metastore&/description&
&/property&
&property&
& &name&javax.jdo.option.ConnectionDriverName&/name&
& &value&org.apache.derby.jdbc.EmbeddedDriver&/value&
& &description&Driver class name for a JDBC metastore&/description&
&/property&
&property&
& &name&javax.jdo.option.ConnectionUserName&/name&
& &value&APP&/value&
& &description&username to use against metastore database&/description&
&/property&
&property&
& &name&javax.jdo.option.ConnectionPassword&/name&
& &value&mine&/value&
& &description&password to use against metastore database&/description&
&/property&
o命令行键入
WARNING: org.apache.hadoop.metrics.jvm.EventCounter is deprecated. Please use org.apache.hadoop.log.metrics.EventCounter in all the log4j.properties files.
Logging initialized using configuration in jar:file:/home/test/Desktop/hive-0.8.1/lib/hive-common-0.8.1.jar!/hive-log4j.properties
Hive history file=/tmp/test/hive_job_log_test__.txt
o建立测试表test
ocreate table test& (key string);
第四部分:使用MySQL数据库的安装方式
oUbuntu 采用apt-get安装
osudo apt-get install mysql-server
o建立数据库hive
ocreate&database&hive&
o创建hive用户,并授权
ogrant&all&on&hive.*&to&hive@'%'&&identified&by&'hive'; &
otar&zxvf& hive-0.8.1.tar& /home/test/Desktop
o建立软连接
oln –s hive-0.8.1 hive
o添加环境变量
oexport HIVE_HOME=/home/test/Desktop/hive
oexport PATH=….HIVE_HOME/bin:$PATH:.
修改hive-site.xml
&property&&
&name&javax.jdo.option.ConnectionURL
&value&jdbc:mysql://localhost:3306/hive
&/property&&
&property&&
&name&javax.jdo.option.ConnectionDriverName
&value&com.mysql.jdbc.Driver
&/property&
&property&&
&name&javax.jdo.option.ConnectionPassword
&value&hive
&/property&&
&property&&
&name&hive.hwi.listen.port
&value&9999
&description&This&is&the&port&the&Hive&Web&Interface&will&listen&on
&/descript
&/property&&
&property&&
&name&datanucleus.autoCreateSchema
&value&false
&/property&&
&property&&
&name&datanucleus.fixedDatastore
&value&true
&/property&&
&property&&
&name&hive.metastore.local
&value&true
&description&controls&whether&to&connect&to&remove&metastore&server&or&open&a&new&metastore&server&in&Hive&Client&JVM
&/description&&
&/property&&
o命令行键入
WARNING: org.apache.hadoop.metrics.jvm.EventCounter is deprecated. Please use org.apache.hadoop.log.metrics.EventCounter in all the log4j.properties files.
Logging initialized using configuration in jar:file:/home/test/Desktop/hive-0.8.1/lib/hive-common-0.8.1.jar!/hive-log4j.properties
Hive history file=/tmp/test/hive_job_log_test__.txt
o建立测试表test
ocreate table test (key string);
精品视频课程推荐
Hadoop初级精品课程,帮助学员快速掌握Hadoop入门到上手开发,并掌握一定的开发技巧。通过Hadoop初级课程,学员可以掌握基本的Hadoop 原理,Hadoop环境搭建,Hadoop Shell,Hadoop HDFS基本操作和编程,Hadoop Mapreduce编程。
本视频课程是北京Java私塾原创精品书籍《研磨设计模式》一书的配套学习视频,由《研磨设计模式》的第一作者CC录制
课程目标:全面、系统的掌握GoF设计模式的知识,达到可以在实际项目开发中运用的能力
技术要点:如何实现可配置、如何实现缓存以及缓存的管理、如何实现用缓存来控制多实例的创建、如何实现参数化工厂、 如何实现可扩展工厂、如何实现原型管理器、如何实现Java的静态代理和动态代理、如何实现多线程处理队列请求、 如何实现命令的参数化配置、可撤销的操作、宏命令、队列请求和日志请求、如何实现翻页迭代、如何检测环状结构、 如何实现通用的增删改查、如何模拟工作流来处理流程、如何实现简单又通用的XML读取、如何实现模拟AOP的功能......
Hadoop中高级精品课程,帮助学员快速掌握Hadoop HDFS的原理;MapReduce的原理;MapReduce高级编程;Hadoop的IO机制,如序列化、压缩;Hadoop的RPC,RESTFul API等高级特性;彻底理解Hadoop,成为一名合格的云计算开发者。并掌握一些云端基本的运维知识,从而实现开发和运维兼修的高级人才。
系统、完整的学习Spring Web MVC开发的知识。包括:Spring Web MVC入门;理解DispatcherServlet;注解式控制器开发详解;数据类型转换;数据格式化;数据验证; 拦截器;对Ajax的支持;文件上传下载;表单标签等内容;最后以一个综合的CRUD带翻页的应用示例来综合所学的知识
WebLogic基础知识:WebLogic基本概念、正确安装WebLogic、建域、应用部署于JDBC选择、对WebLogic的监控和日志查看、集群的高可用性;课程目标:彻底掌握WebLogic的基本概念,在理解基本概念的基础上做到正确的安装WebLogic,根据不同的需求创建域,合理选择应用部署和JDBC配置。熟练掌握WebLogic的console监控,了解各种性能和运行指标,以及对监控结果的分析,运用集群的高可用性,对集群架设。
浏览(166368)|(2)
&&交流分类:|笔记分类:
怎么不可以分享的啊
学习一下...
版权所有 Copyright(C) 私塾在线学习网没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!}

我要回帖

更多关于 数据源的配置文件 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信