hive            Code |FrontPage |HiveTraits

Query


Using Query


The query service (integrated with hivehome server as queen) provides a convenient abstraction over the cluster. It provides an SQL like view over the information returned by individual invocations.

column = trait invocations
row = machines
table = channels

Screen Shot


A simple query being run.

query

select


SelectFunctions


   :sum :product :expr :and :or :uniq

  !select :uniq($my:nick) from #hive where $sys:version <> 0.2
  !select [:sum($sys:version) * :sum($sys:version)] :sum($sys:version) from #hive where $my:session[os] =~ /sparc/i
  !select $sys:hostname from #hive where $my:session[os] =~ /win/i
  !select $file:rm[/tmp/mexico] from #hive

  any ruby statement
  !select $ruby:eval[1 + 2] from #hive
  !select {1 + 2} from #hive

  !select :sum($sys:echo[1]) from #run_tests
  !select :product($sys:version) from #run_tests
  !select [:product($sys:version) + :product($sys:echo[2])] from #run_tests
  !select $ruby:eval[$sys:version * 2]  from #hive
  !select [:sum($ruby:eval[$sys:version * (2+3)]) * 6]  from #hive
  !select $me:tag[me] from #hive where $my:session[os] !~ /sparc/
  !select :sum($sys:version) from #hive group by $me:tag
  !select {$me:session[os][-3..-1]}, {2+4} :sum($sys:version) from #hive group by {$sys:session[os][-3..-1]}

The braces provide a way to escape into executable expressions from the do string.

the :sum, :product etc are collectors that collect data from multiple machines.

ScreenShot

of a query using select functions.

query

defining new collectors.
#any unix command line.
  !select $sys:cat[/tmp/out]  from #hive
  !select $sys:ls[/tmp | wc -l ] from #hive where $me:session[host] =~ /vaishnavam/
  !select $sys:ls[/tmp | head -2 ] from #hive where $me:session[host] =~ /vaishnavam/
  !select $env:HOME from #hive
  !select $env:PATH[/bin:/sbin] from #hive
  !select $sys:ps[-eaf | grep ruby | awk '\{print $0 $2\}' ] from #hive

insert


  !insert into #sunos from #hive,#mexico
  !insert into #sunos from #hive where $me:session[os] =~ /sparc/i
  !insert into #win32 from #hive where $me:session[os]=~ /nt/

delete


  !delete from #sunos where $me:session[os] !~ /sparc/i
  !delete from #sunos

update


  !update #hive with all where $sys:os =~ /WINNT/i