[ 
https://issues.apache.org/jira/browse/DRILL-8259?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17598227#comment-17598227
 ] 

ASF GitHub Bot commented on DRILL-8259:
---------------------------------------

Z0ltrix commented on code in PR #2596:
URL: https://github.com/apache/drill/pull/2596#discussion_r959257458


##########
contrib/storage-hbase/src/main/java/org/apache/drill/exec/store/hbase/config/HBasePersistentStoreProvider.java:
##########
@@ -20,116 +20,249 @@
 import java.io.IOException;
 import java.util.Map;
 
+import org.apache.drill.common.AutoCloseables;
 import org.apache.drill.common.exceptions.DrillRuntimeException;
 import org.apache.drill.exec.exception.StoreException;
 import org.apache.drill.exec.store.hbase.DrillHBaseConstants;
 import org.apache.drill.exec.store.sys.PersistentStore;
 import org.apache.drill.exec.store.sys.PersistentStoreConfig;
 import org.apache.drill.exec.store.sys.PersistentStoreRegistry;
 import 
org.apache.drill.exec.store.sys.store.provider.BasePersistentStoreProvider;
+import 
org.apache.drill.shaded.guava.com.google.common.annotations.VisibleForTesting;
+import org.apache.drill.shaded.guava.com.google.common.collect.Maps;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.hbase.HBaseConfiguration;
-import org.apache.hadoop.hbase.HColumnDescriptor;
 import org.apache.hadoop.hbase.HConstants;
-import org.apache.hadoop.hbase.HTableDescriptor;
 import org.apache.hadoop.hbase.TableName;
 import org.apache.hadoop.hbase.client.Admin;
+import org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder;
 import org.apache.hadoop.hbase.client.Connection;
 import org.apache.hadoop.hbase.client.ConnectionFactory;
+import org.apache.hadoop.hbase.client.Durability;
 import org.apache.hadoop.hbase.client.Table;
+import org.apache.hadoop.hbase.client.TableDescriptor;
+import org.apache.hadoop.hbase.client.TableDescriptorBuilder;
+import org.apache.hadoop.hbase.io.compress.Compression.Algorithm;
+import org.apache.hadoop.hbase.io.encoding.DataBlockEncoding;
 import org.apache.hadoop.hbase.util.Bytes;
 
-import 
org.apache.drill.shaded.guava.com.google.common.annotations.VisibleForTesting;
-
 public class HBasePersistentStoreProvider extends BasePersistentStoreProvider {
   private static final org.slf4j.Logger logger = 
org.slf4j.LoggerFactory.getLogger(HBasePersistentStoreProvider.class);
 
-  static final byte[] FAMILY = Bytes.toBytes("s");
+  public static final byte[] DEFAULT_FAMILY_NAME = Bytes.toBytes("s");
 
-  static final byte[] QUALIFIER = Bytes.toBytes("d");
+  public static final byte[] QUALIFIER_NAME = Bytes.toBytes("d");
+
+  private static final String HBASE_CLIENT_ID = 
"drill-hbase-persistent-store-client";
 
   private final TableName hbaseTableName;
 
+  private final byte[] family;
+
+  private Table hbaseTable;
+
   private Configuration hbaseConf;
 
-  private Connection connection;
+  private final Map<String, Object> tableConfig;
 
-  private Table hbaseTable;
+  private final Map<String, Object> columnConfig;
 
+  private Connection connection;
+
+  @SuppressWarnings("unchecked")
   public HBasePersistentStoreProvider(PersistentStoreRegistry registry) {
-    @SuppressWarnings("unchecked")
-    final Map<String, Object> config = (Map<String, Object>) 
registry.getConfig().getAnyRef(DrillHBaseConstants.SYS_STORE_PROVIDER_HBASE_CONFIG);
-    this.hbaseConf = HBaseConfiguration.create();
-    this.hbaseConf.set(HConstants.HBASE_CLIENT_INSTANCE_ID, 
"drill-hbase-persistent-store-client");
-    if (config != null) {
-      for (Map.Entry<String, Object> entry : config.entrySet()) {
-        this.hbaseConf.set(entry.getKey(), String.valueOf(entry.getValue()));
+    final Map<String, Object> hbaseConfig = (Map<String, Object>) 
registry.getConfig().getAnyRef(DrillHBaseConstants.SYS_STORE_PROVIDER_HBASE_CONFIG);
+    if 
(registry.getConfig().hasPath(DrillHBaseConstants.SYS_STORE_PROVIDER_HBASE_TABLE_CONFIG))
 {
+      tableConfig = (Map<String, Object>) 
registry.getConfig().getAnyRef(DrillHBaseConstants.SYS_STORE_PROVIDER_HBASE_TABLE_CONFIG);
+    } else {
+      tableConfig = Maps.newHashMap();
+    }
+    if 
(registry.getConfig().hasPath(DrillHBaseConstants.SYS_STORE_PROVIDER_HBASE_COLUMN_CONFIG))
 {
+      columnConfig = (Map<String, Object>) 
registry.getConfig().getAnyRef(DrillHBaseConstants.SYS_STORE_PROVIDER_HBASE_COLUMN_CONFIG);
+    } else {
+      columnConfig = Maps.newHashMap();
+    }
+    hbaseConf = HBaseConfiguration.create();

Review Comment:
   > As you know, HBase is a nightmare for operational services due to the 
complexity of the settings. The actual value in the above example is not a 
recommended value, no unique value is appropriate for every case, but is simply 
the type of value that this parameter has to fill, is "true/false", not "0/1".
   
   hi @luocooong im still worried about the defaults, escpecially when drill 
creates the table on his own... 
   
   am i correcth that you dont set any defaults except 
SYS_STORE_PROVIDER_HBASE_TABLE, SYS_STORE_PROVIDER_HBASE_NAMESPACE and 
SYS_STORE_PROVIDER_HBASE_FAMILY?
   





> Support advanced HBase persistence storage options
> --------------------------------------------------
>
>                 Key: DRILL-8259
>                 URL: https://issues.apache.org/jira/browse/DRILL-8259
>             Project: Apache Drill
>          Issue Type: New Feature
>          Components: Storage - HBase
>            Reporter: Cong Luo
>            Assignee: Cong Luo
>            Priority: Major
>             Fix For: 2.0.0
>
>
> Its contents are as follows
> {code:java}
> sys.store.provider: {
>   class: "org.apache.drill.exec.store.hbase.config.HBasePStoreProvider",
>   hbase: {
>     table : "drill_store",
>     config: {
>       "hbase.zookeeper.quorum": "zk_host3,zk_host2,zk_host1",
>       "hbase.zookeeper.property.clientPort": "2181",
>       "zookeeper.znode.parent": "/hbase-test"
>     },
>     table_config : {
>       "durability": "ASYNC_WAL",
>       "compaction_enabled": false,
>       "split_enabled": false,
>       "max_filesize": 10737418240,
>       "memstore_flushsize": 536870912
>     },
>     column_config : {
>       "versions": 1,
>       "ttl": 2626560,
>       "compression": "SNAPPY",
>       "blockcache": true,
>       "blocksize": 131072,
>       "data_block_encoding": "FAST_DIFF",
>       "in_memory": true,
>       "dfs_replication": 3
>     }
>   }
> }{code}
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to