为什么使用HBase比使用一个更好的选择Cassandra用Hadoop?
任何人都可以对此进行详细解释吗?
谢谢
我有一个Standlone HBase服务器.这是我的hbase-site.xml:
<configuration>
<property>
<name>hbase.rootdir</name>
<value>file:///hbase_data</value>
</property>
</configuration>
Run Code Online (Sandbox Code Playgroud)
我正在尝试编写一个Java程序来操作HBase中的数据.
如果我在HBase服务器上运行程序,它可以正常工作.但我不知道如何配置它进行远程访问.
Configuration config = HBaseConfiguration.create();
HTable table = new HTable(config, "test");
Scan s = new Scan();
Run Code Online (Sandbox Code Playgroud)
我试过添加IP和端口,它不起作用:
config.set("hbase.master", "146.169.35.28:60000")
Run Code Online (Sandbox Code Playgroud)
谁能告诉我怎么做?
谢谢!
我试图弄清楚这些新的数据存储如bigtable,hbase和cassandra到底是什么.
我处理大量的股票市场数据,数十亿行价格/报价数据,每天可以累计达到100千兆字节(尽管这些文本文件通常压缩至少一个数量级).这个数据基本上是一些数字,两个或三个短字符串和一个时间戳(通常是毫秒级).如果我必须为每一行选择一个唯一的标识符,我将不得不选择整行(因为交换可能会在同一毫秒内为同一个符号生成多个值).
我想将这些数据映射到bigtable(我包括它的衍生物)的最简单方法是按符号名称和日期(这可能会返回一个非常大的时间序列,超过百万个数据点并非闻所未闻).通过阅读他们的描述,看起来这些系统可以使用多个密钥.我还假设十进制数不是键的好选择.
其中一些系统(例如Cassandra)声称能够进行范围查询.在给定的一天,上午11:00到下午1:30之间,我是否能够有效地查询MSFT的所有值?
如果我想搜索给定日期的所有符号,并请求价格在10美元到10.25美元之间的所有符号,那么该怎么办?所以我正在搜索这些值,并希望返回键作为结果?
如果我想得到两个系列,从另一个中减去一个,并返回两次系列及其结果,我将在自己的程序中做他的逻辑怎么办?
阅读相关论文似乎表明这些系统不适合大规模时间序列系统.但是,如果谷歌地图等系统基于它们,我认为时间序列也应该有效.例如,将时间视为x轴,将价格视为y轴,将符号视为命名位置 - 突然之间看起来像bigtable应该是时间序列的理想存储(如果整个地球可以存储,检索,放大和注释,股市数据应该是微不足道的).
有些专家可以指出我正确的方向或澄清任何误解.
谢谢
我无法弄清楚如何在HBase REST接口(HBase 0.90.4-cdh3u3)中使用过滤器.文档只给我一个"字符串"的模式定义,但没有说明如何使用它.
所以,我能够这样做:
curl -v -H 'Content-Type: text/xml' -d '<Scanner startRow="ddo" stopRow="ddp" batch="1024"/>' 'http://hbasegw:8080/table/scanner'
Run Code Online (Sandbox Code Playgroud)
然后检索
curl -s -H "Content-Type: text/xml" http://hbasegw:8080/table/scanner/13293426893883128482b | tidy -i -q -xml
Run Code Online (Sandbox Code Playgroud)
但是现在我想使用SingleColumnValueFilter并且必须以某种方式在XML中进行编码.有没有人有这方面的例子?
谢谢,马里奥
我想从hbase shell扫描HTable中的行,其中列族(即Tweet)具有特定值(即user_id).
现在我想查找tweet:user_id具有值的所有行,test1因为此列具有值'test1'
column=tweet:user_id, timestamp=1339581201187, value=test1
Run Code Online (Sandbox Code Playgroud)
虽然我可以扫描特定用途的表格,
scan 'tweetsTable',{COLUMNS => 'tweet:user_id'}
Run Code Online (Sandbox Code Playgroud)
但我没有找到任何方法来扫描行的值.
是否可以通过HBase Shell执行此操作?
我也检查了这个问题.
我正在设计一个在hbase上运行的应用程序,并希望以交互方式浏览我的集群的内容.我在hbase shell中,我想要以字符"abc"开头扫描所有键.这样的键可能包括"abc4","abc92","abc20014"等......我试过扫描
hbase(main):003:0> scan 'mytable', {STARTROW => 'abc', ENDROW => 'abc'}
Run Code Online (Sandbox Code Playgroud)
但这似乎没有返回任何东西,因为从技术上讲没有rowkey"abc"只有以"abc"开头的rowkeys
我想要的是类似的东西
hbase(main):003:0> scan 'mytable', {STARTSROWPREFIX => 'abc', ENDROWPREFIX => 'abc'}
Run Code Online (Sandbox Code Playgroud)
我听说HBase能够迅速做到这一点,并且是其主要卖点之一.我如何在hbase shell中执行此操作?
我正在尝试重命名HBase中的表,但shell中的帮助没有rename命令.move,mv其他常见的罪魁祸首似乎也不是这样.
有什么办法可以将hbase shell中的扫描结果输出到文件中吗?我假设这很容易,但我无法在文档中找到任何内容.
我刚开始探索Hive.它具有类似于表,连接,分区等RDBMS的所有结构.我所理解的是Hive仍然使用HDFS进行存储,它是HDFS的SQL抽象.由此我不确定天气Hive本身是一个像HBase,Cassnadra这样的数据库解决方案..或者只是它是HDFS之上的查询系统.我认为它不仅仅是一种查询语言,因为它具有表,连接和分区.