MyEclipes下执行Hive语句查询Hbase数据库数据

前几天有一个top100的案例分享,全程听了各个公司架构组的一些案例技术分享,发现大家都在大数据方面投入很大,相比当当,58,阿里巴巴,Facebook,Google这些公司。新浪的分享者比较保守,很多不算牵扯到细节都系都说不方便说,其实技术都是那些技术,只是业务不同产生很多不同的架构,感觉没必要。

闲话不多说,最近完成了在MyEclipes完成了hive操作Hbase数据库数据,直接上代码

定义枚举。

public enum SqlType

{

ALLORDERNUMBER,

DAYORDERUNMBER,

}

具体方法

public int getAllOrderNumber() {

java.util.Calendar c=java.util.Calendar.getInstance();

java.text.SimpleDateFormat f=new java.text.SimpleDateFormat(“yyyy-MM-dd-hh-mm”);

return getAllOrderNumber(“0″, f.toString());

}

public int getAllOrderNumber(String startData, String endData) {

try {

return (Integer) selectTable(SqlType.ALLORDERNUMBER,startData,endData);

} catch (SQLException e) {

e.printStackTrace();

} catch (ClassNotFoundException e) {

e.printStackTrace();

}

return 0;

}

public static Object selectTable(SqlType type,String startData,String endData) throws SQLException, ClassNotFoundException {

Class.forName(“org.apache.hadoop.hive.jdbc.HiveDriver”);

String querySQL = null;

switch(type)

{

case ALLORDERNUMBER:

querySQL = “SELECT count(DISTINCT Content['UserID']) FROM LoanOrder Where Content['CreateTime']>’@’ AND Content['CreateTime']<‘!'” ;

querySQL = querySQL.replaceAll(“@”,startData);

querySQL = querySQL.replaceAll(“!”,endData);

System.out.println(querySQL);

break;

case DAYORDERUNMBER:

System.out.println(“1″);

querySQL = “SELECT *, count( DISTINCT Content['UserID']) FROM LoanOrder GROUP BY Content['UserID']” ;

break;

default :System.out.println(“没有对应的枚举类型”);

}

Connection con = DriverManager.getConnection(

“jdbc:hive://192.168.3.232:10000/default”, “”, “”);

Statement stmt = con.createStatement();

ResultSet res = stmt.executeQuery(querySQL); // 执行查询语句

while (res.next()) {

System.out.println(“Result: key: ” + res.getString(1)+”——-“+ res.getString(2));

// System.out.println(“Result: key: ” + res.getString(1));

}

return 0;

}

上一篇:openssl加解密原理


下一篇:REDIS6_分布式存储极致性能目录