[ https://issues.apache.org/jira/browse/HBASE-6894?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13487146#comment-13487146 ]
stack commented on HBASE-6894: ------------------------------ The doc on the alter and create help is nice and clean. Thanks. What does this do in the alter help screen? hbase> alter 't1', 'f1', {NAME => 'f2', IN_MEMORY => true}, 'f3' Did you add the new delete method? Thats nicer. I'd say don't mention the old method at all in the help: hbase> alter 't1', NAME => 'f1', METHOD => 'delete' hbase> alter 't1', 'delete' => 'f1' Is this right? You can also change table-scope attributes like MAX_FILESIZE, READONLY, MEMSTORE_FLUSHSIZE, DEFERRED_LOG_FLUSH, etc. These can be put at the end; for example, to change the max size of a family to 128MB, do: hbase> alter 't1', MAX_FILESIZE => '134217728' Says change max filesize of family but its for the table? We have to keep table_att for the below? hbase> alter 't1', METHOD => 'table_att', 'coprocessor'=>'hdfs:///foo.jar|com.foo.FooRegionObserver|1001|arg1=1,arg2=2' Do you think CONFIG a good name for the 'dictionary' that can be in HTableDescriptor and HColumnDescriptor? Would DICT or DICTIONARY or MAP be better names than CONFIG? For example, in the below: hbase> alter 't1', { NAME => 'f1', VERSIONS => 3 }, { MAX_FILESIZE => '134217728' }, { METHOD => 'delete', NAME => 'f2' }, OWNER => 'johndoe', CONFIG => { 'mykey' => 'myvalue' } Should the CONFIG on the end be DICT? or MAP? I created a table with some table attributes. When I describe it, the METHOD => 'table_att' is a little confusing I'd say? Do we have to have that METHOD => 'table_att' in there? Could be a dictionary named 'table_att'? or 'table _attributes'? I was thinking I could add a new table attribute 'METADATA' doing the following but fails. Should I be able too? hbase(main):007:0> create 'y', {NAME => 'x', CONFIG => {'xx' => 'yy'}}, OWNER => 'jim', 'METADATA' => 'xyz', CONFIG => {'aa' => 'bb'} An argument ignored (unknown or overridden): METADATA 0 row(s) in 1.0470 seconds This is nice: hbase(main):009:0> create 'z', {NAME => 'x', CONFIG => {'xx' => 'yy'}}, OWNER => 'jim', CONFIG => {'METADATA' => 'xyz', 'USAGE' => 'usage', 'aa' => 'bb'} 0 row(s) in 1.0440 seconds => Hbase::Table - z hbase(main):010:0> describe 'z' DESCRIPTION ENABLED 'z', {METHOD => 'table_att', CONFIG => {'METADATA' => 'xyz', 'OWNER' => 'jim', 'USAGE' => 'usage', 'aa' => 'bb'}}, {NAME => 'x', D true ATA_BLOCK_ENCODING => 'NONE', BLOOMFILTER => 'NONE', TTL => '2147483647', IN_MEMORY => 'false', REPLICATION_SCOPE => '0', VERSIONS => '3', COMPRESSION => 'NONE', MIN_VERSIONS => '0', KEEP_DELETED_CELLS => 'false', BLOCKSIZE => '65536', ENCODE_ON_DISK => 'true' , BLOCKCACHE => 'true', CONFIG => {'xx' => 'yy'}} 1 row(s) in 0.0310 seconds You have fixed the original issue. Thanks. I think it'd be good if could fix how the above is displayed when I do describe. The original CONFIG way of naming the dictionary I think confusing and worth replacing and the tostring which shows table dictionary stuff as a METHOD =>'table_att' is a little odd. This is great: hbase(main):011:0> disable 'z' 0 row(s) in 7.0600 seconds hbase(main):012:0> alter 'z', OWNER => 'sergey' Updating all regions with the new schema... 1/1 regions updated. Done. 0 row(s) in 6.0810 seconds hbase(main):013:0> describe 'z' DESCRIPTION ENABLED 'z', {METHOD => 'table_att', CONFIG => {'METADATA' => 'xyz', 'OWNER' => 'sergey', 'USAGE' => 'usage', 'aa' => 'bb'}}, {NAME => 'x' false , DATA_BLOCK_ENCODING => 'NONE', BLOOMFILTER => 'NONE', TTL => '2147483647', IN_MEMORY => 'false', REPLICATION_SCOPE => '0', VERSI ONS => '3', COMPRESSION => 'NONE', MIN_VERSIONS => '0', KEEP_DELETED_CELLS => 'false', BLOCKSIZE => '65536', ENCODE_ON_DISK => 'tr ue', BLOCKCACHE => 'true', CONFIG => {'xx' => 'yy'}} 1 row(s) in 0.0280 seconds hbase(main):016:0> alter 'z', CONFIG => {'USAGE' => 'more'} Updating all regions with the new schema... 1/1 regions updated. Done. 0 row(s) in 6.0690 seconds hbase(main):017:0> hbase(main):018:0* describe 'z' DESCRIPTION ENABLED 'z', {METHOD => 'table_att', CONFIG => {'METADATA' => 'xyz', 'OWNER' => 'sergey', 'USAGE' => 'more', 'aa' => 'bb'}}, {NAME => 'x', false DATA_BLOCK_ENCODING => 'NONE', BLOOMFILTER => 'NONE', TTL => '2147483647', IN_MEMORY => 'false', REPLICATION_SCOPE => '0', VERSIO NS => '3', COMPRESSION => 'NONE', MIN_VERSIONS => '0', KEEP_DELETED_CELLS => 'false', BLOCKSIZE => '65536', ENCODE_ON_DISK => 'tru e', BLOCKCACHE => 'true', CONFIG => {'xx' => 'yy'}} 1 row(s) in 0.0270 seconds Big improvement. > Adding metadata to a table in the shell is both arcane and painful > ------------------------------------------------------------------ > > Key: HBASE-6894 > URL: https://issues.apache.org/jira/browse/HBASE-6894 > Project: HBase > Issue Type: Bug > Components: shell > Affects Versions: 0.96.0 > Reporter: stack > Assignee: Sergey Shelukhin > Labels: noob > Attachments: HBASE-6894.patch, HBASE-6894.patch, HBASE-6894.patch, > HBASE-6894-v2.patch, HBASE-6894-v3.1-squashed.patch, > HBASE-6894-v3-squashed.patch > > > In production we have hundreds of tables w/ whack names like 'aliaserv', > 'ashish_bulk', 'age_gender_topics', etc. It be grand if you could look in > master UI and see stuff like owner, eng group responsible, miscellaneous > description, etc. > Now, HTD has support for this; each carries a dictionary. Whats a PITA > though is adding attributes to the dictionary. Here is what seems to work on > trunk (though I do not trust it is doing the right thing): > {code} > hbase> create 'SOME_TABLENAME', {NAME => 'd', VERSION => 1, COMPRESSION => > 'LZO'} > hbase> # Here is how I added metadata > hbase> disable 'SOME_TABLENAME' > hbase> alter 'SOME_TABLENAME', METHOD => 'table_att', OWNER => 'SOMEON', > CONFIG => {'ENVIRONMENT' => 'BLAH BLAH', 'SIZING' => 'The size should be > between 0-10K most of the time with new URLs coming in and getting removed as > they are processed unless the pipeline has fallen behind', 'MISCELLANEOUS' => > 'Holds the list of URLs waiting to be processed in the parked page detection > analyzer in ingestion pipeline.'} > ... > describe... > enable... > {code} > The above doesn't work in 0.94. Complains about the CONFIG, the keyword we > are using for the HTD dictionary. > It works in 0.96 though I'd have to poke around some more to ensure it is > doing the right thing. > But this METHOD => 'table_att' stuff is really ugly.... can we fix it? > And I can't add table attributes on table create seemingly. > A little bit of thought and a bit of ruby could clean this all up. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira