使用Hbase shell时,ruby(.irbrc)的save-history选项不起作用

时间:2013-06-03 19:32:17

标签: hbase

保存历史记录目前正在处理正常的irb(jruby)shell。但由于某些原因,使用hbase shell时它无法正常工作。

我曾经看过过去在其他盒子上使用hbase shell的历史记录,按照现在描述的相同程序进行操作,并且确实有效,所以不确定这次我可能错过了哪些小细节。

我在里面放了〜/ .irbrc:

$ cat  ~/.irbrc
require 'irb/ext/save-history'
IRB.conf[:SAVE_HISTORY] = 100
IRB.conf[:HISTORY_FILE] = "#{ENV['HOME']}/.irb-save-history"

启动irb时需要吗?是..

hbase(main):001:0>   puts IRB.conf[:HISTORY_FILE]
/home/stephenb/.irb-save-history

:AT_EXIT=>[#<Proc:0x6bb5eba4@/shared/jruby-1.7.3/lib/ruby/1.9/irb/ext/save-history.rb:67

这个jruby脚本是否存在?是的..

$ ll /shared/jruby-1.7.3/lib/ruby/1.9/irb/ext/save-history.rb
-rw-r--r-- 1 stephenb stephenb 2119 Feb 21 07:53 /shared/jruby-1.7.3/lib/ruby/1.9/irb/ext/save-history.rb

hbase shell历史记录是否有效?好吧,不是HBASE命令。但它显示了之前IRB会议的内容(非HBASE)

$ date
Mon Jun  3 12:28:41 PDT 2013
stephenb@gondolin:/shared/git2/etl/appminer/hive$ hbase shell
HBase Shell; enter 'help<RETURN>' for list of supported commands.
Type "exit<RETURN>" to leave the HBase Shell
Version 0.92.2, r1379292, Fri Aug 31 13:13:53 UTC 2012

hbase(main):001:0> describe 'app'
DESCRIPTION                                                                              ENABLED                                         
 {NAME => 'app', FAMILIES => [{NAME => 'm', BLOOMFILTER => 'NONE', REPLICATION_SCOPE =>  true                                            
 '0', VERSIONS => '3', COMPRESSION => 'NONE', MIN_VERSIONS => '0', TTL => '2147483647',                                                  
 BLOCKSIZE => '65536', IN_MEMORY => 'false', BLOCKCACHE => 'true'}]}                                                                     
1 row(s) in 0.4500 seconds

hbase(main):002:0> quit
$ ll /home/stephenb/.irb-save-history
-rw-rw-r-- 1 stephenb stephenb 73 Jun  3 12:05 /home/stephenb/.irb-save-history

正如您在调用'hbase shell'之前的'date'和历史文件的修改日期之后所看到的那样,历史文件不会更新。

1 个答案:

答案 0 :(得分:4)

我遇到了同样的问题。经过一番谷歌搜索后,我发现了这篇文章:http://www.nosql.se/page/2/给出了解决方案。 .irbrc文件必须如下:

# cat .irbrc
require 'irb/ext/save-history'
IRB.conf[:SAVE_HISTORY] = 100
IRB.conf[:HISTORY_FILE] = "#{ENV['HOME']}/.irb_history"
Kernel.at_exit do
    IRB.conf[:AT_EXIT].each do |i|
        i.call
    end
end

我不能说为什么(我不想学习Ruby)但它有效。希望它有所帮助。