Take a look at readFile() method in bin/region_mover.rb Cheers
On Sat, Oct 4, 2014 at 2:33 PM, Roger Maillist <[email protected]> wrote: > Well, I see they are using .to_java_bytes to cast a string and pass it to > the put-method, that's ok. But I am having trouble calling > the inputStream.read method. > > I tried this: > > inFile = File.new("/home/roger/Downloads/test.jpg") > inputStream = FileInputStream.new(inFile) > > length = inFile.length() > buffer = "" > > inputStream.read(buffer) > > But that won't work. It's probably more of a JRuby question than actually > an HBase issue... > > 2014-10-04 23:22 GMT+02:00 Ted Yu <[email protected]>: > > > Take a look at _put_internal() method of > > hbase-shell//src/main/ruby/hbase/table.rb > > > > On Sat, Oct 4, 2014 at 2:15 PM, Roger Maillist < > [email protected]> > > wrote: > > > > > Hi out there > > > > > > I am trying to read a (binary) file from the local FS and store it in > > HBase > > > using JRuby. > > > > > > But I fail with the byte-array InputStream needed for the Put-Method: > > > > > > require "java" > > > > > > java_import "java.io.File" > > > java_import "java.io.FileInputStream" > > > > > > java_import "org.apache.hadoop.hbase.client.HTable" > > > java_import "org.apache.hadoop.hbase.client.Put" > > > > > > def jbytes(*args) > > > args.map { |arg| arg.to_s.to_java_bytes } > > > end > > > > > > puts "Hello from Ruby" > > > > > > inFile = File.new("/home/roger/Downloads/test.jpg") > > > inputStream = FileInputStream.new(inFile) > > > > > > length = inFile.length() > > > buffer = Java::byte[length].new > > > > > > inputStream.read(buffer) > > > > > > table = HTable.new(@hbase.configuration, "emails") > > > p = Put.new(*jbytes("roger3.pdf")) > > > > > > p.add(*jbytes("inhalt", "", buffer)) > > > > > > table.put(p) > > > > > > inputStream.close() > > > table.close() > > > > > > > > > > > > Has anyone done this right? > > > > > > I tried and googled....no breakthrough :-/ > > > > > > Thanks > > > Roger > > > > > >
