Quantcast
Channel: 女プログラマってどうよ?
Viewing all articles
Browse latest Browse all 77

[HBase shell][ruby] 指定のカラム修飾子のデータだけを操作

$
0
0

HBase でデータを削除したい場合、
特定の row は delete だの deleteall だので
操作できるのだけど、
カラムファミリとかカラム修飾子とかで操作するのは面倒くさい。

java で書く例はよく見るけど、
ruby で書く例はあまり見かけない気がする。
ので、メモっておく。
あまりにもカンタンだから?

実行方法
> more thisfile.rb | hbase shell > output.log


# 指定のカラム修飾子のデータは削除しない

import org.apache.hadoop.hbase.client.HTable
import org.apache.hadoop.hbase.client.Get

tableName = "MYTABLE"
tableObj = HTable.new(tableName)

row = "myrow"
fam = "myfamily"
getObj = Get.new(row.to_java_bytes)
getObj.addFamily(fam.to_java_bytes)
result = tableObj.get(getObj)

if !result.isEmpty()
 for kv in result.list()
  family = String.from_java_bytes kv.getFamily()
  qualifier = String.from_java_bytes kv.getQualifier()
  # quali1, quali2 は削除しない
  if qualifier != "quali1" && qualifier != "quali2"
   column = family + ':' + qualifier
   print tableName + ', ' + row + ',' + column + "\n"
   deleteall(tableName, row, column)
  end
 end
end

参考:
http://svn.apache.org/repos/asf/hbase/tags/0.20.3RC2/bin/HBase.rb
http://svn.apache.org/repos/asf/hbase/trunk/src/main/ruby/hbase/table.rb


Viewing all articles
Browse latest Browse all 77

Trending Articles