開發環境准備:eclipse3.5、jdk1.7、window8、hadoop2.2.0、hbase0.98.0.2、phoenix4.3.0
1、從集群拷貝以下文件:core-site.xml、hbase-site.xml、hdfs-site.xml文件放到工程src下
2、把phoenix的phoenix-4.3.0-client.jar和phoenix-core-4.3.0.jar添加到工程classpath
3、配置集群中各節點的hosts文件,把客戶端的hostname:IP添加進去
4、在客戶端host文件中加入集群的hostname和IP
5、工程截圖
例子1:
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; public class Phoenix_Test { /** * 使用phoenix提供的api操作hbase讀取數據 */ public static void main(String[] args) throws Throwable { try { // 下面的驅動為Phoenix老版本使用2.11使用,對應hbase0.94+ // Class.forName("com.salesforce.phoenix.jdbc.PhoenixDriver"); // phoenix4.3用下面的驅動對應hbase0.98+ Class.forName("org.apache.phoenix.jdbc.PhoenixDriver"); } catch (Exception e) { e.printStackTrace(); } // 這里配置zookeeper的地址,可單個,也可多個。可以是域名或者ip String url = "jdbc:phoenix:node5,node6,node7"; // String url = // "jdbc:phoenix:41.byzoro.com,42.byzoro.com,43.byzoro.com:2181"; Connection conn = DriverManager.getConnection(url); Statement statement = conn.createStatement(); String sql = "select count(1) as num from WEB_STAT"; long time = System.currentTimeMillis(); ResultSet rs = statement.executeQuery(sql); while (rs.next()) { int count = rs.getInt("num"); System.out.println("row count is " + count); } long timeUsed = System.currentTimeMillis() - time; System.out.println("time " + timeUsed + "mm"); // 關閉連接 rs.close(); statement.close(); conn.close(); } }
執行結果:
例子2:
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; public class Phoenix_Test2 { /** * 使用phoenix提供的api操作hbase中讀取數據 */ public static void main(String[] args) throws Throwable { try { //下面的驅動為Phoenix老版本使用2.11使用,對應hbase0.94+ //Class.forName("com.salesforce.phoenix.jdbc.PhoenixDriver"); //phoenix4.3用下面的驅動對應hbase0.98+ Class.forName("org.apache.phoenix.jdbc.PhoenixDriver"); } catch (Exception e) { e.printStackTrace(); } //這里配置zk的地址,可單個,也可多個。可以是域名或者ip String url = "jdbc:phoenix:node5,node6,node7"; Connection conn = DriverManager.getConnection(url); Statement statement = conn.createStatement(); String sql = "select * from web_stat where core = 1"; long time = System.currentTimeMillis(); ResultSet rs = statement.executeQuery(sql); while (rs.next()) { //獲取core字段值 int core = rs.getInt("core"); //獲取core字段值 String host = rs.getString("host"); //獲取domain字段值 String domain = rs.getString("domain"); //獲取feature字段值 String feature = rs.getString("feature"); //獲取date字段值,數據庫中字段為Date類型,這里代碼會自動轉化為string類型 String date = rs.getString("date"); //獲取db字段值 String db = rs.getString("db"); System.out.println("host:"+host+"\tdomain:"+domain+"\tfeature:"+feature+"\tdate:"+date+"\tcore:" + core+"\tdb:"+db); } long timeUsed = System.currentTimeMillis() - time; System.out.println("time " + timeUsed + "mm"); //關閉連接 rs.close(); statement.close(); conn.close(); } }
執行結果: