From a84b3994734d536b82d5ee226103d84b202cff1e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B8=A9=E5=B0=91?= Date: Fri, 18 May 2012 21:53:53 +0800 Subject: [PATCH] hbase support --- .../alibaba/druid/hbase/HBaseConnection.java | 2 +- .../com/alibaba/druid/hbase/HBaseDriver.java | 17 ++++++++---- .../alibaba/druid/hbase/HBaseConnectTest.java | 14 +++++----- .../alibaba/druid/hbase/HBaseDriverTest.java | 26 +++++++++++++++++++ src/test/resources/log4j.properties | 1 + 5 files changed, 47 insertions(+), 13 deletions(-) create mode 100644 src/test/java/com/alibaba/druid/hbase/HBaseDriverTest.java diff --git a/src/main/java/com/alibaba/druid/hbase/HBaseConnection.java b/src/main/java/com/alibaba/druid/hbase/HBaseConnection.java index 4249fb6aec..f9d671d8d4 100644 --- a/src/main/java/com/alibaba/druid/hbase/HBaseConnection.java +++ b/src/main/java/com/alibaba/druid/hbase/HBaseConnection.java @@ -28,7 +28,7 @@ public class HBaseConnection extends ConnectionBase implements Connection { public HBaseConnection(String url, Properties info){ super(url, info); - config = new Configuration(); + config = new Configuration(false); this.setClientInfo(info); } diff --git a/src/main/java/com/alibaba/druid/hbase/HBaseDriver.java b/src/main/java/com/alibaba/druid/hbase/HBaseDriver.java index 430a936b0d..4fa5951148 100644 --- a/src/main/java/com/alibaba/druid/hbase/HBaseDriver.java +++ b/src/main/java/com/alibaba/druid/hbase/HBaseDriver.java @@ -1,6 +1,5 @@ package com.alibaba.druid.hbase; -import java.sql.Connection; import java.sql.Driver; import java.sql.DriverPropertyInfo; import java.sql.SQLException; @@ -8,10 +7,18 @@ import java.util.Properties; public class HBaseDriver implements Driver { - private String prefix = "jdbc:druid-hbase:"; + public static String PREFIX = "jdbc:druid-hbase:"; @Override - public Connection connect(String url, Properties info) throws SQLException { + public HBaseConnection connect(String url, Properties info) throws SQLException { + if (!acceptsURL(url)) { + return null; + } + + String rest = url.substring(PREFIX.length()); + + info.put("hbase.zookeeper.quorum", rest); + return new HBaseConnection(url, info); } @@ -20,8 +27,8 @@ public class HBaseDriver implements Driver { if (url == null) { return false; } - - return url.startsWith(prefix); + + return url.startsWith(PREFIX); } @Override diff --git a/src/test/java/com/alibaba/druid/hbase/HBaseConnectTest.java b/src/test/java/com/alibaba/druid/hbase/HBaseConnectTest.java index 3203ee2b4a..bdf6a67a9d 100644 --- a/src/test/java/com/alibaba/druid/hbase/HBaseConnectTest.java +++ b/src/test/java/com/alibaba/druid/hbase/HBaseConnectTest.java @@ -11,14 +11,14 @@ public class HBaseConnectTest extends TestCase { public void test_connection() throws Exception { Configuration config = new Configuration();//HBaseConfiguration.create(); - config.set("dfs.support.append", "true"); - config.set("hbase.rootdir", "hdfs://10.20.153.63:9000/hbase"); - config.set("hbase.cluster.distributed", "true"); - config.set("hbase.master", "10.20.153.63:60000"); +// config.set("dfs.support.append", "true"); +// config.set("hbase.rootdir", "hdfs://10.20.153.63:9000/hbase"); +// config.set("hbase.cluster.distributed", "true"); +// config.set("hbase.master", "10.20.153.63:60000"); config.set("hbase.zookeeper.quorum", "10.20.153.63"); - config.set("zookeeper.session.timeout", "30000"); - config.set("hbase.regionserver.handler.count", "100"); - config.set("hbase.client.keyvalue.maxsize", "67108864"); +// config.set("zookeeper.session.timeout", "30000"); +// config.set("hbase.regionserver.handler.count", "100"); +// config.set("hbase.client.keyvalue.maxsize", "67108864"); // config = HBaseConfiguration.create(); diff --git a/src/test/java/com/alibaba/druid/hbase/HBaseDriverTest.java b/src/test/java/com/alibaba/druid/hbase/HBaseDriverTest.java new file mode 100644 index 0000000000..099935729a --- /dev/null +++ b/src/test/java/com/alibaba/druid/hbase/HBaseDriverTest.java @@ -0,0 +1,26 @@ +package com.alibaba.druid.hbase; + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.util.Properties; + +import junit.framework.TestCase; + + +public class HBaseDriverTest extends TestCase { + public void test_0 () throws Exception { + HBaseDriver driver = new HBaseDriver(); + Connection conn = driver.connect("jdbc:druid-hbase::10.20.153.63", new Properties()); + + PreparedStatement stmt = conn.prepareStatement("SELECT * FROM test"); + ResultSet rs = stmt.executeQuery(); + while (rs.next()) { + + } + rs.close(); + stmt.close(); + + conn.close(); + } +} diff --git a/src/test/resources/log4j.properties b/src/test/resources/log4j.properties index 7fb1ab6b07..f897cf40e9 100644 --- a/src/test/resources/log4j.properties +++ b/src/test/resources/log4j.properties @@ -27,5 +27,6 @@ log4j.category.org.codehaus.xfire=INFO log4j.category.httpclient=INFO log4j.category.org.apache.struts.action.ActionServlet=ERROR log4j.category.com.alibaba.druid.mock=ERROR +log4j.category.org.apache.hadoop.conf.Configuration=INFO log4j.rootLogger=TRACE,CONSOLE