最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

[原创]无法向HBase表插入数据的一个问题

来源:动视网 责编:小采 时间:2020-11-09 13:27:48
文档

[原创]无法向HBase表插入数据的一个问题

[原创]无法向HBase表插入数据的一个问题:转载必须注明出处: http://www.codelast.com/ 遇到一例无法向HBase插入数据的问题,发现问题所在之后觉得超级雷人,特记录下来。 【1】 在写程序之前,先通过 hbase shell 来创建一张数据表: create 'test', {NAME = 'f', COMPR
推荐度:
导读[原创]无法向HBase表插入数据的一个问题:转载必须注明出处: http://www.codelast.com/ 遇到一例无法向HBase插入数据的问题,发现问题所在之后觉得超级雷人,特记录下来。 【1】 在写程序之前,先通过 hbase shell 来创建一张数据表: create 'test', {NAME = 'f', COMPR


转载必须注明出处: http://www.codelast.com/ 遇到一例无法向HBase插入数据的问题,发现问题所在之后觉得超级雷人,特记录下来。 【1】 在写程序之前,先通过 hbase shell 来创建一张数据表: create 'test', {NAME = 'f', COMPRESSION = 'NONE', VERSIONS

转载必须注明出处:http://www.codelast.com/

遇到一例无法向HBase插入数据的问题,发现问题所在之后觉得超级雷人,特记录下来。

【1】在写程序之前,先通过 hbase shell 来创建一张数据表:

create 'test', {NAME => 'f', COMPRESSION => 'NONE', VERSIONS => '1', TTL => '5184000', BLOCKSIZE => '65536', IN_MEMORY => 'false', BLOCKCACHE => 'true'}

这样,就创建了一张名为“test”的HBase表,其column family为“f”。

【2】写Java代码,用于向HBase表插入一条记录。代码如下:

import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.util.Bytes;
import org.apache.log4j.Logger;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class HBasePutTest {
 private static Logger LOGGER = Logger.getLogger(HBasePutTest.class);
 private static List list = new ArrayList();
 private static HTable tableTest = initHTableTest();
 public static HTable initHTableTest() {
 HTable table = null;
 try {
 table = new HTable(new HBaseConfiguration(), "test");
 } catch (IOException e) {
 LOGGER.error(e.toString());
 }
 return table;
 }
 public static void main(String[] args) {
 Put put = new Put(Bytes.toBytes("abc"));
 put.add(Bytes.toBytes("f"),
 Bytes.toBytes("q"), 13399L,
 Bytes.toBytes("123"));
 list.add(put);
 try {
 tableTest.put(list);
 LOGGER.info("Successfully put 1 record into HBase.");
 } catch (Exception e) {
 LOGGER.error(e.toString());
 } finally {
 list.clear();
 }
 }
}

文章来源:http://www.codelast.com/
上面的代码,向HBase的“test”表插入了一条记录,row key为“abc”,value为“123”,column family为“f”,qualifier为“q”(即,column为“f:q”),记录的timestamp为13399(随便写的一个值)。

【3】代码看上去没有什么问题,因此,我们执行它,然后回到 hbase shell,查看一下记录是否被成功地插入了名为“test”的HBase表中:

get 'test', 'abc'

这表示从“test”表中取出row key为“abc”的所有记录。
结果竟然是:一条也没有。为什么?

【4】分析问题。在经过试验之后,发现将Java代码中,要插入记录的timestamp设置为当前时间,是可以成功向HBase插入记录的,于是终于发现,原来是:创建HBase表的时候,设置的那个TTL值,使得timestamp为13399的这条记录,就算是一插入了HBase表,也会被马上删除,所以用 hbase shell 根本看不到。
文章来源:http://www.codelast.com/
所以,调试时千万要注意测试环境中的陷阱。

文档

[原创]无法向HBase表插入数据的一个问题

[原创]无法向HBase表插入数据的一个问题:转载必须注明出处: http://www.codelast.com/ 遇到一例无法向HBase插入数据的问题,发现问题所在之后觉得超级雷人,特记录下来。 【1】 在写程序之前,先通过 hbase shell 来创建一张数据表: create 'test', {NAME = 'f', COMPR
推荐度:
标签: 一个 记录 无法
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top