hbase shell使用STARTROW、ENDROW、FILTER查出指定的列

2019-03-28 12:41|来源: 网路

hbase shell使用STARTROW、ENDROW、FILTER查出指定的列


引入相当的类

hbase(main):002:0> import org.apache.hadoop.hbase.util.Bytes

hbase(main):003:0> import org.apache.hadoop.hbase.filter.SingleColumnValueFilter

hbase(main):004:0> import org.apache.hadoop.hbase.filter.BinaryComparator

hbase(main):005:0> import org.apache.hadoop.hbase.filter.CompareFilter


使用BinaryComparator比较器

scan 'test', { STARTROW=>'row-1',ENDROW=>'row-4',FILTER => SingleColumnValueFilter.new(Bytes.toBytes('d'), Bytes.toBytes('a'), CompareFilter::CompareOp.valueOf('EQUAL'), BinaryComparator.new(Bytes.toBytes('v-b')))}


使用SubstringComparator比较器

scan 'test1',{STARTROW=>'006040058',ENDROW=>'006040059',COLUMN=>'d:ltime',FILTER=>SingleColumnValueFilter.new(Bytes.toBytes('d'), Bytes.toBytes('eventCat'), CompareFilter::CompareOp.valueOf('EQUAL'), SubstringComparator.new('jbs'))}


现在还有个问题,就是在查出来的列发中,直接把byte直接转为string?求答案


相关问答

更多
  • 伪分布意味着您正在一台机器上运行所有进程。 您需要检查所有必需的进程是否正在运行: Hadoop的: 的NameNode 数据管理部 JobTracker的 的TaskTracker 动物园管理员: HQuorumPeer HBase的: HMASTER RegionServer的 您还需要确保您的hbase-site.xml包含定义主机名和端口的zookeeper的正确条目。 HBase FAQ和Wiki真的很不错。 你从那里错过了什么? Pseudo-distributed means that you ...
  • 您正在使用带有“=”的SingleColumnValue过滤器。 您还可以使用该过滤器包含<,>,<=,> =。 因此,您可以使用过滤器(>,20140501)和过滤器(<=,20140505) 。 像这样的东西。 请理解,过滤器越多,延迟就越多。 因为扫描发生在整个数据上并验证匹配 You are using, SingleColumnValue filter with "=". You can also include <,>,<=,>= with that filter. So you can use ...
  • 我想它是在凌晨2点发布的,但这很简单。 我并没有完全围绕词典排序。 自99_ <9_以来,我最初的想法无法奏效。 我最终为startRow添加了一个PrefixFilter并删除了endRow,这样它只是抓取以OOID开头的行: 在Java中: xml.append(""); // Prefix Filter PrefixFilter test = new PrefixFilter ...
  • 尝试这个。 这是一种丑陋,但它适用于我。 import org.apache.hadoop.hbase.filter.CompareFilter import org.apache.hadoop.hbase.filter.SingleColumnValueFilter import org.apache.hadoop.hbase.filter.SubstringComparator import org.apache.hadoop.hbase.util.Bytes scan 't1', { COLUMNS ...
  • 我在hbase中了解了一些基本的Filter和scan shell命令,发现SingleColumnValueFilter非常适合基于值的过滤单元。 以下命令对我有用: 扫描'Mytable',{COLUMNS => ['abc'],FILTER =>“SingleColumnValueFilter('abc','drug',=,'binary:avil')”,STARTROW =>“1100”,ENDROW =>“ 1121" } I've gone through some basics of Filt ...
  • 我们终于改变了HBase连接器。 通过it.nerdammer.spark.hbase(通过RDD),它可以很好地工作。 import it.nerdammer.spark.hbase._ rdd.toHBaseTable(tableName) .toColumns("MATCHED") .inColumnFamily(cfName) .save() We finally changed the HBase connector. With the it.nerdammer.spark.h ...
  • 使用扫描对象设置开始和结束行,并在Hbase配置中设置该扫描对象,然后将该配置对象传递给tableInputFormat https://hbase.apache.org/apidocs/org/apache/hadoop/hbase/client/Scan html的 Scan scan = new Scan(startRow, endRow); scan.setMaxVersions(MAX_VERSIONS); //This can also be done if not specified in ...
  • 假设您的问题是如何从Hbase查询数据。 Apache Phoenix在Hbase上提供了一个Sql Wrapper。 Hive Hbase Integration Hive还提供了一个基于Hbase的Sql Wrapper Spark Hbase Plugin允许您的Apache Spark应用程序与Apache HBase交互。 Assuming that your question is on how to query data from Hbase. Apache Phoenix Provides ...
  • 您需要在hbase-site.xml中配置zookeeper znode。 zookeeper.znode.parent /hbase 不匹配可能是由于默认配置。 您可以使用zkcli验证ZooKeeper中的可用znode。 You need to configure zookeeper znode in hbase-site.xml. zookeep ...
  • 看起来HBase表中的键存储为字符串。 这意味着像1,2,3等数字位于表的不同部分,并且它们之间还有许多其他键。 所以你的问题的答案是:在唯一的扫描操作的帮助下,无法扫描你想要的数值范围。 但是您有两种可能的方法来解决您的问题: 1)更改密钥的架构。 只需将您的密钥转换为整数并将其存储在HBase中。 这样,您的密钥将存储为4个元素的字节数组(如果使用长整数,则存储为8个元素),并以完全数字方式在HBase中进行排序。 此模式具有内存效率,但不支持shell,因为在HBase shell中,默认情况下只能键 ...