Class: Hive
- Inherits:
-
Object
- Object
- Hive
- Defined in:
- lib/jruby_hive.rb
Class Method Summary collapse
Instance Method Summary collapse
-
#initialize(db = "default") ⇒ Hive
constructor
A new instance of Hive.
- #run(cmd, max_rows = 10000) ⇒ Object
- #use(db) ⇒ Object
Constructor Details
#initialize(db = "default") ⇒ Hive
Returns a new instance of Hive.
39 40 41 42 43 44 45 46 |
# File 'lib/jruby_hive.rb', line 39 def initialize(db="default") @db = db @hconf = HiveConf.new @driver = Driver.new(@hconf) SessionState.start(CliSessionState.new(@hconf)) @driver.run("use #{@db}") end |
Class Method Details
.bootstrap ⇒ Object
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/jruby_hive.rb', line 10 def self.bootstrap if ENV['HIVE_HOME'] hive_home=ENV['HIVE_HOME'] else raise HiveError, "HIVE_HOME is not set!" end hadoop_home=ENV['HADOOP_HOME'] Dir[ "#{hadoop_home}/share/hadoop/mapreduce/*.jar", "#{hadoop_home}/share/hadoop/mapreduce/lib/*.jar", "#{hive_home}/lib/*.jar" ].each do |jar| require jar end $CLASSPATH << "#{hive_home}/conf" require 'hdfs_jruby' java_import 'java.util.ArrayList' java_import 'org.apache.hadoop.hive.conf.HiveConf' #java_import 'org.apache.hadoop.hive.conf.HiveConf.ConfVars' java_import 'org.apache.hadoop.hive.ql.Driver' java_import 'org.apache.hadoop.hive.ql.processors.CommandProcessorResponse' java_import 'org.apache.hadoop.hive.cli.CliSessionState' java_import 'org.apache.hadoop.hive.ql.session.SessionState' end |
Instance Method Details
#run(cmd, max_rows = 10000) ⇒ Object
53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
# File 'lib/jruby_hive.rb', line 53 def run(cmd, max_rows=10000) @driver.setMaxRows(max_rows) r = @driver.run(cmd) if r.getResponseCode != 0 raise HiveError, "hive error: " << r.getErrorMessage end if block_given? list = ArrayList.new while @driver.getResults(list) list.each do | n | yield n end list.clear end else list = ArrayList.new if @driver.getResults(list) return list.to_ary end return nil end end |
#use(db) ⇒ Object
48 49 50 51 |
# File 'lib/jruby_hive.rb', line 48 def use(db) @db = db @driver.run("use #{@db}") end |