[ https://issues.apache.org/jira/browse/HBASE-487?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
stack updated HBASE-487: ------------------------ Attachment: groovy.patch Patch to get groovy into hbase. Currently type "./bin/hbase groovy" to make it work. Jars to include are about 2.7M Can use the groovy config. to preload the shell w/ hbase helper scripts and methods Should do our own shell Main so we use later commons-cli, the one we include... that'd cut down on having to import one more jar and so we don't show 'inspect' in as a help option (I'm running groovy headless -- but maybe we want AWT and being able to inspect objects to see what their API, etc.)? Here is sample: {code} durruti:~/Documents/checkouts/hbase/trunk stack$ ./bin/hbase groovy Groovy Shell (1.5.4, JVM: 1.5.0_13-121) Type 'help' or '\h' for help. --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- groovy:000> help For information about Groovy, visit: http://groovy.codehaus.org Available commands: help (\h) Display this help message ? (\?) Alias to: help exit (\x) Exit the shell quit (\q) Alias to: exit import (\i) Import a class into the namespace display (\d) Display the current buffer clear (\c) Clear the buffer show (\S) Show variables, classes or imports inspect (\n) Inspect a variable or the last result with the GUI object browser purge (\p) Purge variables, classes, imports or preferences edit (\e) Edit the current buffer load (\l) Load a file or URL into the buffer . (\.) Alias to: load save (\s) Save the current buffer to a file record (\r) Record the current session to a file history (\H) Display, manage and recall edit-line history alias (\a) Create an alias set (\=) Set (or list) preferences For help on a specific command type: help command groovy:000> import org.apache.hadoop.hbase.client.HTable groovy:000> import org.apache.hadoop.hbase.HBaseConfiguration groovy:000> c = new HBaseConfiguration() ... {code} > Replace hql w/ a hbase-friendly jirb or jython shell > ---------------------------------------------------- > > Key: HBASE-487 > URL: https://issues.apache.org/jira/browse/HBASE-487 > Project: Hadoop HBase > Issue Type: Wish > Reporter: stack > Assignee: stack > Priority: Minor > Attachments: groovy.patch > > > The hbase shell is a useful admin and debugging tool but it has a couple of > downsides. To extend, a fragile parser definition needs tinkering-with and > new java classes must be added. The current test suite for hql is lacking > coverage and the current code could do with a rewrite having evolved > piecemeal. Another downside is that the presence of an HQL interpreter gives > the mis-impression that hbase is like a SQL database. > This 'wish' issue suggests that we jettison HQL and instead offer users a > jirb or jython command line. We'd ship with some scripts and jruby/jython > classes that we'd source on startup to do things like import base client > classes -- so folks wouldn't have to remember all the packages stuff sat in > -- and added a pretty-print for scanners and getters outputting text, xhtml > or binary. They would also make it easy to do HQL-things in jruby/python > script. > Advantages: Already-written parser with no need of extension probing deeper > into hbase: i.e. better for debugging than HQL could ever be. Easy extension > adding scripts/modules rather than java code. Less likely hbase could be > confused for a SQL db. > Downsides: Probably more verbose. Requires ruby or python knowledge > ("Everyone knows some sql"). Big? (jruby lib is 24M). > I was going to write security as downside but HQL suffers this at the moment > too -- though it has been possible to sort the updates from the selects in > the UI to prevent modification of the db from the UI, something that would be > hard to do in a jruby/jython parser. > What do others think? -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.