通过 JRuby 脚本从 HBase 获取列数据
Get column data from HBase via JRuby script
我可以通过 hbase shell
:
获取 HBase
table 中特定列的值
hbase(main):002:0> scan 'some_table', {STARTROW => '7af02800f4c6478cde0f55e8bce34f4a2efa48f2', LIMIT => 1, COLUMNS => ['foo:bar']}
ROW COLUMN+CELL
7af02800f4c6478cde0f55e8bce34f4a2efa48f2 column=foo:bar, timestamp=0, value=http://someurl.com/some/path
1 row(s) in 0.4430 seconds
我想用 jruby
脚本重现相同的内容。以下是我的做法。
include Java
import org.apache.hadoop.hbase.HBaseConfiguration
import org.apache.hadoop.hbase.client.HTable
import org.apache.hadoop.hbase.client.Get
tableName = 'some_table'
conf = HBaseConfiguration.create
ht = HTable.new(conf, tableName)
key = '7af02800f4c6478cde0f55e8bce34f4a2efa48f2'
my_get = Get.new(key.to_java_bytes)
result = ht.get(my_get)
# And what to do now?
通过 JRuby
从 HBase
table 获取列值的正确方法是什么?
include Java
import org.apache.hadoop.hbase.HBaseConfiguration
import org.apache.hadoop.hbase.client.HTable
import org.apache.hadoop.hbase.client.Get
import org.apache.hadoop.hbase.util.Bytes
tableName = 'some_table'
conf = HBaseConfiguration.create
ht = HTable.new(conf, tableName)
key = '7af02800f4c6478cde0f55e8bce34f4a2efa48f2'
my_get = Get.new(key.to_java_bytes)
result = ht.get(my_get)
# This
puts Bytes.toStringBinary(result.getValue('foo'.to_java_bytes, 'bar'.to_java_bytes))
我可以通过 hbase shell
:
HBase
table 中特定列的值
hbase(main):002:0> scan 'some_table', {STARTROW => '7af02800f4c6478cde0f55e8bce34f4a2efa48f2', LIMIT => 1, COLUMNS => ['foo:bar']}
ROW COLUMN+CELL
7af02800f4c6478cde0f55e8bce34f4a2efa48f2 column=foo:bar, timestamp=0, value=http://someurl.com/some/path
1 row(s) in 0.4430 seconds
我想用 jruby
脚本重现相同的内容。以下是我的做法。
include Java
import org.apache.hadoop.hbase.HBaseConfiguration
import org.apache.hadoop.hbase.client.HTable
import org.apache.hadoop.hbase.client.Get
tableName = 'some_table'
conf = HBaseConfiguration.create
ht = HTable.new(conf, tableName)
key = '7af02800f4c6478cde0f55e8bce34f4a2efa48f2'
my_get = Get.new(key.to_java_bytes)
result = ht.get(my_get)
# And what to do now?
通过 JRuby
从 HBase
table 获取列值的正确方法是什么?
include Java
import org.apache.hadoop.hbase.HBaseConfiguration
import org.apache.hadoop.hbase.client.HTable
import org.apache.hadoop.hbase.client.Get
import org.apache.hadoop.hbase.util.Bytes
tableName = 'some_table'
conf = HBaseConfiguration.create
ht = HTable.new(conf, tableName)
key = '7af02800f4c6478cde0f55e8bce34f4a2efa48f2'
my_get = Get.new(key.to_java_bytes)
result = ht.get(my_get)
# This
puts Bytes.toStringBinary(result.getValue('foo'.to_java_bytes, 'bar'.to_java_bytes))