You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by "Nihal Jain (JIRA)" <ji...@apache.org> on 2018/04/02 06:32:00 UTC

[jira] [Created] (HBASE-20327) When qualifier is not specified, append and incr operation do not work (shell)

Nihal Jain created HBASE-20327:
----------------------------------

             Summary: When qualifier is not specified, append and incr operation do not work (shell)
                 Key: HBASE-20327
                 URL: https://issues.apache.org/jira/browse/HBASE-20327
             Project: HBase
          Issue Type: Bug
          Components: shell
    Affects Versions: 1.3.1, 3.0.0, 2.0.0
            Reporter: Nihal Jain


Running the example commands specified in shell docs for "append" and "incr" throw following error:
{code:java}
ERROR: Failed to provide both column family and column qualifier for append{code}
{code:java}
ERROR: Failed to provide both column family and column qualifier for incr{code}
While running the same command via java does not require the user to provide both column and qualifier and works smoothly.

 

Steps to reproduce:

1) APPEND
{code:java}
hbase(main):002:0> create 't1', 'c1', 'c2'
Created table t1
Took 0.8151 seconds                                                                                                                            
hbase(main):003:0> append 't1', 'r1', 'c1', 'value'

ERROR: Failed to provide both column family and column qualifier for append

Appends a cell 'value' at specified table/row/column coordinates.

  hbase> append 't1', 'r1', 'c1', 'value', ATTRIBUTES=>{'mykey'=>'myvalue'}
  hbase> append 't1', 'r1', 'c1', 'value', {VISIBILITY=>'PRIVATE|SECRET'}

The same commands also can be run on a table reference. Suppose you had a reference
t to table 't1', the corresponding command would be:

  hbase> t.append 'r1', 'c1', 'value', ATTRIBUTES=>{'mykey'=>'myvalue'}
  hbase> t.append 'r1', 'c1', 'value', {VISIBILITY=>'PRIVATE|SECRET'}

Took 0.0326 seconds                                                                                                                          {code}
While the same command would run if we run the following java code:
{code:java}
    try (Connection connection = ConnectionFactory.createConnection(config);
        Admin admin = connection.getAdmin();) {
      Table table = connection.getTable(TableName.valueOf("t1"));
      Append a = new Append(Bytes.toBytes("r1"));
      a.addColumn(Bytes.toBytes("c1"), null, Bytes.toBytes("value"));
      table.append(a);
    }{code}
Scan result after executing java code:
{code:java}
hbase(main):005:0> scan 't1'
ROW                                  COLUMN+CELL                                                                                               
 r1                                  column=c1:, timestamp=1522649623090, value=value                                                          
1 row(s)
Took 0.0188 seconds    
{code}
 

2) INCREMENT:

Similarly in case of increment, we get the following error (shell):
{code:java}
hbase(main):006:0> incr 't1', 'r2', 'c1', 111

ERROR: Failed to provide both column family and column qualifier for incr

Increments a cell 'value' at specified table/row/column coordinates.
To increment a cell value in table 'ns1:t1' or 't1' at row 'r1' under column
'c1' by 1 (can be omitted) or 10 do:

  hbase> incr 'ns1:t1', 'r1', 'c1'
  hbase> incr 't1', 'r1', 'c1'
  hbase> incr 't1', 'r1', 'c1', 1
  hbase> incr 't1', 'r1', 'c1', 10
  hbase> incr 't1', 'r1', 'c1', 10, {ATTRIBUTES=>{'mykey'=>'myvalue'}}
  hbase> incr 't1', 'r1', 'c1', {ATTRIBUTES=>{'mykey'=>'myvalue'}}
  hbase> incr 't1', 'r1', 'c1', 10, {VISIBILITY=>'PRIVATE|SECRET'}

The same commands also can be run on a table reference. Suppose you had a reference
t to table 't1', the corresponding command would be:

  hbase> t.incr 'r1', 'c1'
  hbase> t.incr 'r1', 'c1', 1
  hbase> t.incr 'r1', 'c1', 10, {ATTRIBUTES=>{'mykey'=>'myvalue'}}
  hbase> t.incr 'r1', 'c1', 10, {VISIBILITY=>'PRIVATE|SECRET'}

Took 0.0103 seconds                                                                                                                            
hbase(main):007:0> scan 't1'
ROW                                  COLUMN+CELL                                                                                               
 r1                                  column=c1:, timestamp=1522649623090, value=value                                                          
1 row(s)
Took 0.0062 seconds      
{code}
While the same command would run, if we run the following java code:
{code:java}
    try (Connection connection = ConnectionFactory.createConnection(config);
        Admin admin = connection.getAdmin();) {
      Table table = connection.getTable(TableName.valueOf("t1"));
      Increment incr = new Increment(Bytes.toBytes("r2"));
      incr.addColumn(Bytes.toBytes("c1"), null, 111);
      table.increment(incr);
      scan(table);
    }
{code}
Scan result after executing java code: 
{code:java}
hbase(main):008:0> scan 't1'
ROW                                  COLUMN+CELL                                                                                               
 r1                                  column=c1:, timestamp=1522649623090, value=value                                                          
 r2                                  column=c1:, timestamp=1522649933949, value=\x00\x00\x00\x00\x00\x00\x00o                                  
2 row(s)
Took 0.0133 seconds                                                                                                                          {code}
 



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)