如何使用 HBase shell 获取多个列
how to get multiple columns using HBase shell
我有 Randonnee Table 有 2 个家庭专栏
Info: Name, region, suite
Tech: distance, denivele
我的 Table Randonnee
上有这个数据
(id, Name, region, distance, denivele, suite)
(1, 'Monts du Djurdjura', 'Tizi Ouzou', 35, 1000, NULL);
(2, 'Circuit de Misserghin', 'Oran', 25 , 514, NULL);
(3, 'Montagne de Murdjadju', 'Oran', 31, 1100, NULL);
(4, 'Canastel', 'Oran', 18, 890, 3);
(5, 'Yama Gouraya', 'Bejaia', 19, 900, NULL);
(6, 'Sidi Makhlouf', 'Blida', 8, 165, 8);
(7, 'Tikjda', 'Tizi Ouzou', 10, 1900, NULL);
(8, 'Feroukha', 'Blida', 14.18, 454, NULL);
(9, 'Chrea Azzazga', 'Tizi Ouzou', 6.23, 1548, 11);
我想获取名称为 'Montagne de Murdjadu'
的 randonne 的距离
我试过这个查询:
scan 'randonnee',{COLUMN=>'info:Name',FILTER=>"ValueFilter(=, 'binary:Montagne de Murdjadju')"}
但问题是她给了我 return 中的 id,而不是距离
ROW COLUMN+CELL
3 column=info:nom, timestamp=1509960875652, value=Montagne de Murdjadju
如何获取距离?
您可以使用SingleColumnValueFilter
。在 hbase shell 中,您可以执行以下操作来获取距离
import org.apache.hadoop.hbase.filter.CompareFilter
import org.apache.hadoop.hbase.filter.SingleColumnValueFilter
import org.apache.hadoop.hbase.util.Bytes
scan 'randonnee', {COLUMNS=>['tech:distance'], FILTER=>SingleColumnValueFilter.new(Bytes.toBytes('info'),Bytes.toBytes('name'),CompareFilter::CompareOp.valueOf('EQUAL'),Bytes.toBytes('Montagne de Murdjadju'))}
这个查询给我 randonnee 的距离,其中 Name 是 'Montagne de Murdjadu'
scan 'randonnee',{FILTER=>"SingleColumnValueFilter('info', 'Name', =,'binary:Montagne de Murdjadju') AND ColumnPrefixFilter ('distance')"}
或
scan 'randonnee',{FILTER=>"SingleColumnValueFilter('info', 'Name', =,'binary:Montagne de Murdjadju') AND QualifierFilter(=,'binary:distance') "}
结果:
ROW COLUMN+CELL
3 column=tech:dist, timestamp=1509961960359, value=31
我有 Randonnee Table 有 2 个家庭专栏
Info: Name, region, suite
Tech: distance, denivele
我的 Table Randonnee
上有这个数据 (id, Name, region, distance, denivele, suite)
(1, 'Monts du Djurdjura', 'Tizi Ouzou', 35, 1000, NULL);
(2, 'Circuit de Misserghin', 'Oran', 25 , 514, NULL);
(3, 'Montagne de Murdjadju', 'Oran', 31, 1100, NULL);
(4, 'Canastel', 'Oran', 18, 890, 3);
(5, 'Yama Gouraya', 'Bejaia', 19, 900, NULL);
(6, 'Sidi Makhlouf', 'Blida', 8, 165, 8);
(7, 'Tikjda', 'Tizi Ouzou', 10, 1900, NULL);
(8, 'Feroukha', 'Blida', 14.18, 454, NULL);
(9, 'Chrea Azzazga', 'Tizi Ouzou', 6.23, 1548, 11);
我想获取名称为 'Montagne de Murdjadu'
的 randonne 的距离我试过这个查询:
scan 'randonnee',{COLUMN=>'info:Name',FILTER=>"ValueFilter(=, 'binary:Montagne de Murdjadju')"}
但问题是她给了我 return 中的 id,而不是距离
ROW COLUMN+CELL
3 column=info:nom, timestamp=1509960875652, value=Montagne de Murdjadju
如何获取距离?
您可以使用SingleColumnValueFilter
。在 hbase shell 中,您可以执行以下操作来获取距离
import org.apache.hadoop.hbase.filter.CompareFilter
import org.apache.hadoop.hbase.filter.SingleColumnValueFilter
import org.apache.hadoop.hbase.util.Bytes
scan 'randonnee', {COLUMNS=>['tech:distance'], FILTER=>SingleColumnValueFilter.new(Bytes.toBytes('info'),Bytes.toBytes('name'),CompareFilter::CompareOp.valueOf('EQUAL'),Bytes.toBytes('Montagne de Murdjadju'))}
这个查询给我 randonnee 的距离,其中 Name 是 'Montagne de Murdjadu'
scan 'randonnee',{FILTER=>"SingleColumnValueFilter('info', 'Name', =,'binary:Montagne de Murdjadju') AND ColumnPrefixFilter ('distance')"}
或
scan 'randonnee',{FILTER=>"SingleColumnValueFilter('info', 'Name', =,'binary:Montagne de Murdjadju') AND QualifierFilter(=,'binary:distance') "}
结果:
ROW COLUMN+CELL
3 column=tech:dist, timestamp=1509961960359, value=31