- 引入Phoenix jar
在maven項目中引入Phoenix jar包:
<dependency>
<groupId>org.apache.phoenix</groupId>
<artifactId>phoenix-core</artifactId>
<version>4.8.0-HBase-1.1</version>
</dependency>
備注:版本需與hbase版本一致,否則會出現問題
- 使用JDBC 訪問Phoenix
Phoenix除了提供SQLLine這種命令方式,同時提供了JDBC代碼的訪問方式。
package com.dajiangtai.phoenix;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
/**
* phoenix測試類
* @author John
*
*/
public class PhoenixTest {
public static Connection getConnection(){
Connection con;
try {
//設置連接類名
Class.forName("org.apache.phoenix.jdbc.PhoenixDriver");
//設置連接URL
con = DriverManager.getConnection("jdbc:phoenix:master:2181");
return con;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
}
//查詢方法
public void query(String sql) throws SQLException{
//創建連接
Connection con = getConnection();
Statement stmt = con.createStatement();
//執行查詢
ResultSet rs = stmt.executeQuery(sql);
//獲取元數據信息
ResultSetMetaData rsmd = rs.getMetaData();
int columnCount = rsmd.getColumnCount();
//獲取列名
StringBuilder sb = new StringBuilder();
for(int i = 1;i<=columnCount;i++){
String columnName = rsmd.getColumnLabel(i);
sb.append(columnName+"\t");
}
if(sb.length()>0){
sb.setLength(sb.length()-1);
System.out.println(sb.toString());
//查詢結果
while(rs.next()){
sb = new StringBuilder();
for(int i=1;i<=columnCount;i++){
sb.append(rs.getString(i)+"\t");
}
if(sb.length()>0){
sb.setLength(sb.length()-1);
System.out.println(sb.toString());
}
}
}
//關閉連接
con.close();
}
/**
* @param args
* @throws SQLException
*/
public static void main(String[] args) throws SQLException {
// TODO Auto-generated method stub
PhoenixTest test = new PhoenixTest();
//查詢Phoenix表WEB_STAT所有記錄
test.query("select * from WEB_STAT");
}
}
執行結果如下所示: