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

Sean Busbey commented on HBASE-20270:
-------------------------------------

great idea. current implementation is too brittle though. what if we add a 
"get_name" method to Command and have it default to transforming klass? then 
things with special handling (like needing to use "CFs" in the name) can 
override the method?

> Turn off command help that follows all errors in shell
> ------------------------------------------------------
>
>                 Key: HBASE-20270
>                 URL: https://issues.apache.org/jira/browse/HBASE-20270
>             Project: HBase
>          Issue Type: Task
>          Components: shell
>    Affects Versions: 2.0.0
>            Reporter: Sean Busbey
>            Assignee: Sakthi
>            Priority: Major
>             Fix For: 2.0.0
>
>         Attachments: hbase-20270.master.001.patch, 
> hbase-20270.master.002.patch, hbase-20270.master.003.patch
>
>
> Right now if a shell command gives an error, any error, it then echos the 
> command help. It makes it harder to see the actual error text and is annoying.
> example:
> {code}
>                                                                               
>                                                                               
>                            
> hbase(main):007:0> create 'test:a_table', 'family', { NUMREGIONS => 20, 
> SPLITALGO => 'HexStringSplit'}
> ERROR: Unknown namespace test!
> Creates a table. Pass a table name, and a set of column family
> specifications (at least one), and, optionally, table configuration.
> Column specification can be a simple string (name), or a dictionary
> (dictionaries are described below in main help output), necessarily
> including NAME attribute.
> Examples:
> Create a table with namespace=ns1 and table qualifier=t1
>   hbase> create 'ns1:t1', {NAME => 'f1', VERSIONS => 5}
> Create a table with namespace=default and table qualifier=t1
>   hbase> create 't1', {NAME => 'f1'}, {NAME => 'f2'}, {NAME => 'f3'}
>   hbase> # The above in shorthand would be the following:
>   hbase> create 't1', 'f1', 'f2', 'f3'
>   hbase> create 't1', {NAME => 'f1', VERSIONS => 1, TTL => 2592000, 
> BLOCKCACHE => true}
>   hbase> create 't1', {NAME => 'f1', CONFIGURATION => 
> {'hbase.hstore.blockingStoreFiles' => '10'}}
>   hbase> create 't1', {NAME => 'f1', IS_MOB => true, MOB_THRESHOLD => 
> 1000000, MOB_COMPACT_PARTITION_POLICY => 'weekly'}
> Table configuration options can be put at the end.
> Examples:
>   hbase> create 'ns1:t1', 'f1', SPLITS => ['10', '20', '30', '40']
>   hbase> create 't1', 'f1', SPLITS => ['10', '20', '30', '40']
>   hbase> create 't1', 'f1', SPLITS_FILE => 'splits.txt', OWNER => 'johndoe'
>   hbase> create 't1', {NAME => 'f1', VERSIONS => 5}, METADATA => { 'mykey' => 
> 'myvalue' }
>   hbase> # Optionally pre-split the table into NUMREGIONS, using
>   hbase> # SPLITALGO ("HexStringSplit", "UniformSplit" or classname)
>   hbase> create 't1', 'f1', {NUMREGIONS => 15, SPLITALGO => 'HexStringSplit'}
>   hbase> create 't1', 'f1', {NUMREGIONS => 15, SPLITALGO => 'HexStringSplit', 
> REGION_REPLICATION => 2, CONFIGURATION => 
> {'hbase.hregion.scan.loadColumnFamiliesOnDemand' => 'true'}}
>   hbase> create 't1', {NAME => 'f1', DFS_REPLICATION => 1}
> You can also keep around a reference to the created table:
>   hbase> t1 = create 't1', 'f1'
> Which gives you a reference to the table named 't1', on which you can then
> call methods.
> Took 0.0221 seconds                                                           
>                                                                               
>                                                 
> hbase(main):008:0> create_namespace 'test'
> Took 0.2554 seconds                                                           
>                                                                               
>                                                 
> hbase(main):009:0> create 'test:a_table', 'family', { NUMREGIONS => 20, 
> SPLITALGO => 'HexStringSplit'}
> Created table test:a_table
> Took 1.2264 seconds                     
> {code}
> I was trying to make a table in the test namespace before making the 
> namespace. Much faster to recognize and move on when the error text isn't 
> followed by 80x the text.



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

Reply via email to