You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hbase.apache.org by "Y. SREENIVASULU REDDY (JIRA)" <ji...@apache.org> on 2013/11/14 13:37:21 UTC

[jira] [Created] (HBASE-9970) HBase BulkLoad, table is creating with the timestamp key also as a column to the table.

Y. SREENIVASULU REDDY created HBASE-9970:
--------------------------------------------

             Summary: HBase BulkLoad, table is creating with the timestamp key also as a column to the table. 
                 Key: HBASE-9970
                 URL: https://issues.apache.org/jira/browse/HBASE-9970
             Project: HBase
          Issue Type: Bug
    Affects Versions: 0.94.11
            Reporter: Y. SREENIVASULU REDDY
            Assignee: Y. SREENIVASULU REDDY
             Fix For: 0.98.0, 0.96.1, 0.94.14


If BulkLoad job is running with out creating a table.
job itself will create the table if table is not found.
{quote}
if (!doesTableExist(tableName)) {
        createTable(conf, tableName);
      }
{quote}
if columns contains timestamp also then table is creating with defined columns and timestamp key.
{quote}
eg: -Dimporttsv.columns=HBASE_ROW_KEY,HBASE_TS_KEY,d:num
{quote}

table is creating with the following columnFamilies.
'HBASE_TS_KEY' and 'd' 

while iterating timestamp key also need to avoid while describing the column descriptors.
{code}
private static void createTable(HBaseAdmin admin, String tableName, String[] columns)
      throws IOException {
    HTableDescriptor htd = new HTableDescriptor(TableName.valueOf(tableName));
    Set<String> cfSet = new HashSet<String>();
    for (String aColumn : columns) {
      if (TsvParser.ROWKEY_COLUMN_SPEC.equals(aColumn)) continue;
      // we are only concerned with the first one (in case this is a cf:cq)
      cfSet.add(aColumn.split(":", 2)[0]);
    }
    for (String cf : cfSet) {
      HColumnDescriptor hcd = new HColumnDescriptor(Bytes.toBytes(cf));
      htd.addFamily(hcd);
    }
    LOG.warn(format("Creating table '%s' with '%s' columns and default descriptors.",
      tableName, cfSet));
    admin.createTable(htd);
  }
{code}

{quote}
Index: hbase-server/src/main/java/org/apache/hadoop/hbase/mapreduce/ImportTsv.java
===================================================================
--- hbase-server/src/main/java/org/apache/hadoop/hbase/mapreduce/ImportTsv.java	(revision 1539967)
+++ hbase-server/src/main/java/org/apache/hadoop/hbase/mapreduce/ImportTsv.java	(working copy)
@@ -413,7 +413,8 @@
     HTableDescriptor htd = new HTableDescriptor(TableName.valueOf(tableName));
     Set<String> cfSet = new HashSet<String>();
     for (String aColumn : columns) {
-      if (TsvParser.ROWKEY_COLUMN_SPEC.equals(aColumn)) continue;
+      if (TsvParser.ROWKEY_COLUMN_SPEC.equals(aColumn)
+          || TsvParser.TIMESTAMPKEY_COLUMN_SPEC.equals(aColumn)) continue;
       // we are only concerned with the first one (in case this is a cf:cq)
       cfSet.add(aColumn.split(":", 2)[0]);
     }

{quote}



--
This message was sent by Atlassian JIRA
(v6.1#6144)