You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by br...@apache.org on 2013/08/06 16:36:14 UTC

svn commit: r1510973 - in /hive/trunk/hbase-handler/src: java/org/apache/hadoop/hive/hbase/HiveHBaseTableInputFormat.java test/queries/positive/hbase_binary_map_queries_prefix.q test/results/positive/hbase_binary_map_queries_prefix.q.out

Author: brock
Date: Tue Aug  6 14:36:14 2013
New Revision: 1510973

URL: http://svn.apache.org/r1510973
Log:
HIVE-4995: select * may incorrectly return empty fields with hbase-handler (Swarnim Kulkarni via Brock Noland)

Added:
    hive/trunk/hbase-handler/src/test/queries/positive/hbase_binary_map_queries_prefix.q
    hive/trunk/hbase-handler/src/test/results/positive/hbase_binary_map_queries_prefix.q.out
Modified:
    hive/trunk/hbase-handler/src/java/org/apache/hadoop/hive/hbase/HiveHBaseTableInputFormat.java

Modified: hive/trunk/hbase-handler/src/java/org/apache/hadoop/hive/hbase/HiveHBaseTableInputFormat.java
URL: http://svn.apache.org/viewvc/hive/trunk/hbase-handler/src/java/org/apache/hadoop/hive/hbase/HiveHBaseTableInputFormat.java?rev=1510973&r1=1510972&r2=1510973&view=diff
==============================================================================
--- hive/trunk/hbase-handler/src/java/org/apache/hadoop/hive/hbase/HiveHBaseTableInputFormat.java (original)
+++ hive/trunk/hbase-handler/src/java/org/apache/hadoop/hive/hbase/HiveHBaseTableInputFormat.java Tue Aug  6 14:36:14 2013
@@ -109,6 +109,9 @@ public class HiveHBaseTableInputFormat e
     Scan scan = new Scan();
     boolean empty = true;
 
+    // The list of families that have been added to the scan
+    List<String> addedFamilies = new ArrayList<String>();
+
     if (!addAll) {
       for (int i : readColIDs) {
         ColumnMapping colMap = columnsMapping.get(i);
@@ -118,8 +121,12 @@ public class HiveHBaseTableInputFormat e
 
         if (colMap.qualifierName == null) {
           scan.addFamily(colMap.familyNameBytes);
+          addedFamilies.add(colMap.familyName);
         } else {
-          scan.addColumn(colMap.familyNameBytes, colMap.qualifierNameBytes);
+          if(!addedFamilies.contains(colMap.familyName)){
+            // add only if the corresponding family has not already been added
+            scan.addColumn(colMap.familyNameBytes, colMap.qualifierNameBytes);
+          }
         }
 
         empty = false;
@@ -458,6 +465,9 @@ public class HiveHBaseTableInputFormat e
 
     Scan scan = new Scan();
 
+    // The list of families that have been added to the scan
+    List<String> addedFamilies = new ArrayList<String>();
+
     // REVIEW:  are we supposed to be applying the getReadColumnIDs
     // same as in getRecordReader?
     for (int i = 0; i <columnsMapping.size(); i++) {
@@ -468,8 +478,12 @@ public class HiveHBaseTableInputFormat e
 
       if (colMap.qualifierName == null) {
         scan.addFamily(colMap.familyNameBytes);
+        addedFamilies.add(colMap.familyName);
       } else {
-        scan.addColumn(colMap.familyNameBytes, colMap.qualifierNameBytes);
+        if(!addedFamilies.contains(colMap.familyName)){
+          // add the column only if the family has not already been added
+          scan.addColumn(colMap.familyNameBytes, colMap.qualifierNameBytes);
+        }
       }
     }
 

Added: hive/trunk/hbase-handler/src/test/queries/positive/hbase_binary_map_queries_prefix.q
URL: http://svn.apache.org/viewvc/hive/trunk/hbase-handler/src/test/queries/positive/hbase_binary_map_queries_prefix.q?rev=1510973&view=auto
==============================================================================
--- hive/trunk/hbase-handler/src/test/queries/positive/hbase_binary_map_queries_prefix.q (added)
+++ hive/trunk/hbase-handler/src/test/queries/positive/hbase_binary_map_queries_prefix.q Tue Aug  6 14:36:14 2013
@@ -0,0 +1,52 @@
+DROP TABLE hbase_src;
+
+CREATE TABLE hbase_src(key STRING,
+                       tinyint_col TINYINT,
+                       smallint_col SMALLINT,
+                       int_col INT,
+                       bigint_col BIGINT,
+                       float_col FLOAT,
+                       double_col DOUBLE,
+                       string_col STRING);
+
+INSERT OVERWRITE TABLE hbase_src
+  SELECT key, key, key, key, key, key, key, value
+  FROM src
+  WHERE key = 125 OR key = 126 OR key = 127;
+
+DROP TABLE t_hbase_maps;
+
+CREATE TABLE t_hbase_maps(key STRING,
+                          string_map_col MAP<STRING, STRING>,
+                          simple_string_col STRING)
+STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
+WITH SERDEPROPERTIES ("hbase.columns.mapping"=":key,cf-string:,cf-string:simple_string_col")
+TBLPROPERTIES ("hbase.table.name"="t_hive_maps");
+
+INSERT OVERWRITE TABLE t_hbase_maps
+  SELECT key,
+         map("string_col", string_col),
+         string_col
+  FROM hbase_src
+  WHERE key = 125;
+
+INSERT OVERWRITE TABLE t_hbase_maps
+  SELECT key,
+         map("string_col", string_col),
+         string_col
+  FROM hbase_src
+  WHERE key = 126;
+
+SELECT * FROM t_hbase_maps ORDER BY key;
+
+DROP TABLE t_ext_hbase_maps;
+
+CREATE EXTERNAL TABLE t_ext_hbase_maps(key STRING,
+                                       string_map_cols MAP<STRING, STRING>, simple_string_col STRING)
+STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
+WITH SERDEPROPERTIES ("hbase.columns.mapping"=":key,cf-string:string_col.*,cf-string:simple_string_col")
+TBLPROPERTIES ("hbase.table.name"="t_hive_maps");
+
+SELECT * FROM t_ext_hbase_maps ORDER BY key;
+
+DROP TABLE t_ext_hbase_maps;
\ No newline at end of file

Added: hive/trunk/hbase-handler/src/test/results/positive/hbase_binary_map_queries_prefix.q.out
URL: http://svn.apache.org/viewvc/hive/trunk/hbase-handler/src/test/results/positive/hbase_binary_map_queries_prefix.q.out?rev=1510973&view=auto
==============================================================================
--- hive/trunk/hbase-handler/src/test/results/positive/hbase_binary_map_queries_prefix.q.out (added)
+++ hive/trunk/hbase-handler/src/test/results/positive/hbase_binary_map_queries_prefix.q.out Tue Aug  6 14:36:14 2013
@@ -0,0 +1,217 @@
+PREHOOK: query: DROP TABLE hbase_src
+PREHOOK: type: DROPTABLE
+POSTHOOK: query: DROP TABLE hbase_src
+POSTHOOK: type: DROPTABLE
+PREHOOK: query: CREATE TABLE hbase_src(key STRING,
+                       tinyint_col TINYINT,
+                       smallint_col SMALLINT,
+                       int_col INT,
+                       bigint_col BIGINT,
+                       float_col FLOAT,
+                       double_col DOUBLE,
+                       string_col STRING)
+PREHOOK: type: CREATETABLE
+POSTHOOK: query: CREATE TABLE hbase_src(key STRING,
+                       tinyint_col TINYINT,
+                       smallint_col SMALLINT,
+                       int_col INT,
+                       bigint_col BIGINT,
+                       float_col FLOAT,
+                       double_col DOUBLE,
+                       string_col STRING)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: default@hbase_src
+PREHOOK: query: INSERT OVERWRITE TABLE hbase_src
+  SELECT key, key, key, key, key, key, key, value
+  FROM src
+  WHERE key = 125 OR key = 126 OR key = 127
+PREHOOK: type: QUERY
+PREHOOK: Input: default@src
+PREHOOK: Output: default@hbase_src
+POSTHOOK: query: INSERT OVERWRITE TABLE hbase_src
+  SELECT key, key, key, key, key, key, key, value
+  FROM src
+  WHERE key = 125 OR key = 126 OR key = 127
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@src
+POSTHOOK: Output: default@hbase_src
+POSTHOOK: Lineage: hbase_src.bigint_col EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: hbase_src.double_col EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: hbase_src.float_col EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: hbase_src.int_col EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: hbase_src.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: hbase_src.smallint_col EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: hbase_src.string_col SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+POSTHOOK: Lineage: hbase_src.tinyint_col EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+PREHOOK: query: DROP TABLE t_hbase_maps
+PREHOOK: type: DROPTABLE
+POSTHOOK: query: DROP TABLE t_hbase_maps
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Lineage: hbase_src.bigint_col EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: hbase_src.double_col EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: hbase_src.float_col EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: hbase_src.int_col EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: hbase_src.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: hbase_src.smallint_col EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: hbase_src.string_col SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+POSTHOOK: Lineage: hbase_src.tinyint_col EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+PREHOOK: query: CREATE TABLE t_hbase_maps(key STRING,
+                          string_map_col MAP<STRING, STRING>,
+                          simple_string_col STRING)
+STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
+WITH SERDEPROPERTIES ("hbase.columns.mapping"=":key,cf-string:,cf-string:simple_string_col")
+TBLPROPERTIES ("hbase.table.name"="t_hive_maps")
+PREHOOK: type: CREATETABLE
+POSTHOOK: query: CREATE TABLE t_hbase_maps(key STRING,
+                          string_map_col MAP<STRING, STRING>,
+                          simple_string_col STRING)
+STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
+WITH SERDEPROPERTIES ("hbase.columns.mapping"=":key,cf-string:,cf-string:simple_string_col")
+TBLPROPERTIES ("hbase.table.name"="t_hive_maps")
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: default@t_hbase_maps
+POSTHOOK: Lineage: hbase_src.bigint_col EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: hbase_src.double_col EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: hbase_src.float_col EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: hbase_src.int_col EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: hbase_src.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: hbase_src.smallint_col EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: hbase_src.string_col SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+POSTHOOK: Lineage: hbase_src.tinyint_col EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+PREHOOK: query: INSERT OVERWRITE TABLE t_hbase_maps
+  SELECT key,
+         map("string_col", string_col),
+         string_col
+  FROM hbase_src
+  WHERE key = 125
+PREHOOK: type: QUERY
+PREHOOK: Input: default@hbase_src
+PREHOOK: Output: default@t_hbase_maps
+POSTHOOK: query: INSERT OVERWRITE TABLE t_hbase_maps
+  SELECT key,
+         map("string_col", string_col),
+         string_col
+  FROM hbase_src
+  WHERE key = 125
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@hbase_src
+POSTHOOK: Output: default@t_hbase_maps
+POSTHOOK: Lineage: hbase_src.bigint_col EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: hbase_src.double_col EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: hbase_src.float_col EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: hbase_src.int_col EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: hbase_src.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: hbase_src.smallint_col EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: hbase_src.string_col SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+POSTHOOK: Lineage: hbase_src.tinyint_col EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+PREHOOK: query: INSERT OVERWRITE TABLE t_hbase_maps
+  SELECT key,
+         map("string_col", string_col),
+         string_col
+  FROM hbase_src
+  WHERE key = 126
+PREHOOK: type: QUERY
+PREHOOK: Input: default@hbase_src
+PREHOOK: Output: default@t_hbase_maps
+POSTHOOK: query: INSERT OVERWRITE TABLE t_hbase_maps
+  SELECT key,
+         map("string_col", string_col),
+         string_col
+  FROM hbase_src
+  WHERE key = 126
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@hbase_src
+POSTHOOK: Output: default@t_hbase_maps
+POSTHOOK: Lineage: hbase_src.bigint_col EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: hbase_src.double_col EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: hbase_src.float_col EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: hbase_src.int_col EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: hbase_src.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: hbase_src.smallint_col EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: hbase_src.string_col SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+POSTHOOK: Lineage: hbase_src.tinyint_col EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+PREHOOK: query: SELECT * FROM t_hbase_maps ORDER BY key
+PREHOOK: type: QUERY
+PREHOOK: Input: default@t_hbase_maps
+#### A masked pattern was here ####
+POSTHOOK: query: SELECT * FROM t_hbase_maps ORDER BY key
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@t_hbase_maps
+#### A masked pattern was here ####
+POSTHOOK: Lineage: hbase_src.bigint_col EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: hbase_src.double_col EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: hbase_src.float_col EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: hbase_src.int_col EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: hbase_src.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: hbase_src.smallint_col EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: hbase_src.string_col SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+POSTHOOK: Lineage: hbase_src.tinyint_col EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+125	{"simple_string_col":"val_125","string_col":"val_125"}	val_125
+126	{"simple_string_col":"val_126","string_col":"val_126"}	val_126
+PREHOOK: query: DROP TABLE t_ext_hbase_maps
+PREHOOK: type: DROPTABLE
+POSTHOOK: query: DROP TABLE t_ext_hbase_maps
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Lineage: hbase_src.bigint_col EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: hbase_src.double_col EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: hbase_src.float_col EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: hbase_src.int_col EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: hbase_src.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: hbase_src.smallint_col EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: hbase_src.string_col SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+POSTHOOK: Lineage: hbase_src.tinyint_col EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+PREHOOK: query: CREATE EXTERNAL TABLE t_ext_hbase_maps(key STRING,
+                                       string_map_cols MAP<STRING, STRING>, simple_string_col STRING)
+STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
+WITH SERDEPROPERTIES ("hbase.columns.mapping"=":key,cf-string:string_col.*,cf-string:simple_string_col")
+TBLPROPERTIES ("hbase.table.name"="t_hive_maps")
+PREHOOK: type: CREATETABLE
+POSTHOOK: query: CREATE EXTERNAL TABLE t_ext_hbase_maps(key STRING,
+                                       string_map_cols MAP<STRING, STRING>, simple_string_col STRING)
+STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
+WITH SERDEPROPERTIES ("hbase.columns.mapping"=":key,cf-string:string_col.*,cf-string:simple_string_col")
+TBLPROPERTIES ("hbase.table.name"="t_hive_maps")
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: default@t_ext_hbase_maps
+POSTHOOK: Lineage: hbase_src.bigint_col EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: hbase_src.double_col EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: hbase_src.float_col EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: hbase_src.int_col EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: hbase_src.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: hbase_src.smallint_col EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: hbase_src.string_col SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+POSTHOOK: Lineage: hbase_src.tinyint_col EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+PREHOOK: query: SELECT * FROM t_ext_hbase_maps ORDER BY key
+PREHOOK: type: QUERY
+PREHOOK: Input: default@t_ext_hbase_maps
+#### A masked pattern was here ####
+POSTHOOK: query: SELECT * FROM t_ext_hbase_maps ORDER BY key
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@t_ext_hbase_maps
+#### A masked pattern was here ####
+POSTHOOK: Lineage: hbase_src.bigint_col EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: hbase_src.double_col EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: hbase_src.float_col EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: hbase_src.int_col EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: hbase_src.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: hbase_src.smallint_col EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: hbase_src.string_col SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+POSTHOOK: Lineage: hbase_src.tinyint_col EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+125	{"string_col":"val_125"}	val_125
+126	{"string_col":"val_126"}	val_126
+PREHOOK: query: DROP TABLE t_ext_hbase_maps
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@t_ext_hbase_maps
+PREHOOK: Output: default@t_ext_hbase_maps
+POSTHOOK: query: DROP TABLE t_ext_hbase_maps
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@t_ext_hbase_maps
+POSTHOOK: Output: default@t_ext_hbase_maps
+POSTHOOK: Lineage: hbase_src.bigint_col EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: hbase_src.double_col EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: hbase_src.float_col EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: hbase_src.int_col EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: hbase_src.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: hbase_src.smallint_col EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: hbase_src.string_col SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+POSTHOOK: Lineage: hbase_src.tinyint_col EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ]