① Hbase手动设置时间戳,无法删除数据,怎么办
1. Native Java API,最常规和高效的访问方式,适合Hadoop MapRece Job并行批处理HBase表数据。
2. HBase Shell,HBase的命令行工具,最简单的接口,适合HBase管理使用。
3. Thrift Gateway,利用Thrift序列化技术,支持C++,PHP,Python等多种语言,适合其他异构系统在线访问HBase表数据。
4. REST Gateway,支持REST 风格的Http API访问HBase, 解除了语言限制。
5. Pig,可以使用Pig Latin流式编程语言来操作HBase中的数据,和Hive类似,本质最终也是编译成MapRece Job来处理HBase表数据,适合做数据统计。
6. Hive,当前Hive的Release版本尚没有加入对HBase的支持,但在下一个版本Hive 0.7.0中将会支持HBase,可以使用类似SQL语言来访问HBase。
HBase数据模型Table & Column Family。
② hbase 时间戳如何排序
1.数据查询模式已经确定,且不易改变,就是说hbase使用在某种种特定的情况下,且不能变动。版2.告诉插入,大权量读龋因为分布式系统对大量数据的存取更具优势。3.尽量少的有数据修改。因为hbase中的数据修改知识在后面添加一行新数据,表示覆盖前一...
③ hbase的timestamp怎么换算 java
hbase shell中timestamp转为可读格式
将 shell的timestamp转为可读。下面的示例将-ROOT-表的列info:serverstartcode的timestamp和value转成可读格式。
hbase(main):001:0> scan '-ROOT-'
ROW COLUMN+CELL
.META.,,1 column=info:regioninfo, timestamp=1340249081981, value={NAME => '.META.,,
1', STARTKEY => '', ENDKEY => '', ENCODED => 1028785192,}
.META.,,1 column=info:server, timestamp=1341304672637, value=Hadoop46:60020
.META.,,1 column=info:serverstartcode, timestamp=1341304672637, value=1341301228326
.META.,,1 column=info:v, timestamp=1340249081981, value=\x00\x00
1 row(s) in 1.3230 seconds
hbase(main):002:0> import java.util.Date
=> Java::JavaUtil::Date
hbase(main):003:0> Date.new(1341304672637).toString()
=> "Tue Jul 03 16:37:52 CST 2012"
hbase(main):004:0> Date.new(1341301228326).toString()
=> "Tue Jul 03 15:40:28 CST 2012"
在shell中,如果有可读日期,能否转成long类型呢?
hbase(main):005:0> import java.text.SimpleDateFormat
=> Java::JavaText::SimpleDateFormat
hbase(main):006:0> import java.text.ParsePosition
=> Java::JavaText::ParsePosition
hbase(main):015:0> SimpleDateFormat.new("yy/MM/dd").parse("12/07/03",ParsePosition.new(0)).getTime()
=> 1341244800000
④ Hbase手动设置时间戳,无法删除数据,怎么办
改时间戳,会带来很多问题。
首先对于楼主出现的问题,应该是自己封装的问题。
对于第一个问题:
//数据插入,人为不设置时间戳,数据能删除,但是不能录入多版本数据
put.add(Bytes.toBytes(colFamily.getColumnFamilyName()),
Bytes.toBytes(col.getColumnName()),
Bytes.toBytes(col.getValue()));
认为不设置时间戳,数据是能删除和录入多版本数据的,这是毋庸置疑的。
对于第二个问题
//数据插入,人为设置时间戳,数据不能删除,但是能录入多版本数据
put.add(Bytes.toBytes(colFamily.getColumnFamilyName()),
Bytes.toBytes(col.getColumnName()),
col.getTimeStamp(), Bytes.toBytes(col.getValue()));
hbase自带的时间戳是精确到毫秒的.楼主可查看时间戳是否有相同的。务必自己生成具有唯一性的时间戳