From 5897efbe5ae87e6498770b92e77f8a04eba7239c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B8=A9=E5=B0=91?= Date: Sat, 19 May 2012 23:47:14 +0800 Subject: [PATCH] hbase support --- .../java/com/alibaba/druid/hbase/HEngine.java | 17 ++++++++++++----- .../hbase/exec/SingleTableQueryExecutePlan.java | 2 +- .../alibaba/druid/hbase/mapping/HMapping.java | 10 ++++++++++ 3 files changed, 23 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/alibaba/druid/hbase/HEngine.java b/src/main/java/com/alibaba/druid/hbase/HEngine.java index 2c47c526b5..2b0bf580a8 100644 --- a/src/main/java/com/alibaba/druid/hbase/HEngine.java +++ b/src/main/java/com/alibaba/druid/hbase/HEngine.java @@ -8,11 +8,13 @@ import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.client.HTableInterface; import org.apache.hadoop.hbase.client.HTablePool; +import com.alibaba.druid.hbase.mapping.HMapping; import com.alibaba.druid.logging.Log; import com.alibaba.druid.logging.LogFactory; public class HEngine { - private final static Log LOG = LogFactory.getLog(HEngine.class); + + private final static Log LOG = LogFactory.getLog(HEngine.class); private static ConcurrentMap engines = new ConcurrentHashMap(); @@ -28,11 +30,12 @@ public class HEngine { // ============================= - private final String url; + private final String url; - private HTablePool tablePool; - private int htablePoolMaxSize = 256; - private Configuration config; + private HTablePool tablePool; + private int htablePoolMaxSize = 256; + private Configuration config; + private ConcurrentMap mappings = new ConcurrentHashMap(); public HEngine(String url, Properties connectProperties){ super(); @@ -64,6 +67,10 @@ public class HEngine { return config; } + public ConcurrentMap getMappings() { + return mappings; + } + public synchronized HTableInterface getHTable(String tableName) { if (tablePool == null) { tablePool = new HTablePool(config, htablePoolMaxSize); diff --git a/src/main/java/com/alibaba/druid/hbase/exec/SingleTableQueryExecutePlan.java b/src/main/java/com/alibaba/druid/hbase/exec/SingleTableQueryExecutePlan.java index 35ffbf40ac..281cc555d2 100644 --- a/src/main/java/com/alibaba/druid/hbase/exec/SingleTableQueryExecutePlan.java +++ b/src/main/java/com/alibaba/druid/hbase/exec/SingleTableQueryExecutePlan.java @@ -62,7 +62,6 @@ public class SingleTableQueryExecutePlan extends SingleTableExecutePlan { public HBaseResultSet executeQuery(HPreparedStatement statement) throws SQLException { try { HBaseConnection connection = statement.getConnection(); - HTableInterface htable = connection.getHTable(getTableName()); String dbType = connection.getConnectProperties().getProperty("dbType"); Scan scan = new Scan(); @@ -109,6 +108,7 @@ public class SingleTableQueryExecutePlan extends SingleTableExecutePlan { } } + HTableInterface htable = connection.getHTable(getTableName()); ResultScanner scanner = htable.getScanner(scan); HBaseResultSet resultSet = new HBaseResultSet(statement, htable, scanner); diff --git a/src/main/java/com/alibaba/druid/hbase/mapping/HMapping.java b/src/main/java/com/alibaba/druid/hbase/mapping/HMapping.java index 168c07a526..cde5703ba4 100644 --- a/src/main/java/com/alibaba/druid/hbase/mapping/HMapping.java +++ b/src/main/java/com/alibaba/druid/hbase/mapping/HMapping.java @@ -7,9 +7,19 @@ import java.util.Map; public class HMapping { + private String tableName; + private Map columns = new LinkedHashMap(); private HMappingColumn keyColumn; + public String getTableName() { + return tableName; + } + + public void setTableName(String tableName) { + this.tableName = tableName; + } + public Collection getColumns() { return Collections.unmodifiableCollection(columns.values()); }