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
↧
[HBase shell][ruby] 指定のカラム修飾子のデータだけを操作
↧