在hbase中将所有整数存储为字符串而不是byte []可以吗?

Mahesha999

我正在尝试一些hbase代码。我意识到,当我使用put命令通过hbase shell插入数据时,所有内容(数字和字符串)都将作为字符串放置:

hbase(main):001:0> create 'employee', {NAME => 'f'}
hbase(main):003:0> put 'employee', 'ganesh','f:age',30
hbase(main):004:0> put 'employee', 'ganesh','f:desg','mngr'
hbase(main):005:0> scan 'employee'
ROW                   COLUMN+CELL
ganesh               column=f:age, timestamp=1467926618738, value=30
ganesh               column=f:desg, timestamp=1467926639557, value=mngr

但是,当我使用Java API放置数据时,非字符串内容会序列化为byte[]

Cluster lNodes = new Cluster();
lNodes.add("digitate-VirtualBox:8090");
Client lClient= new Client(lNodes);
RemoteHTable remoteht = new RemoteHTable(lClient, "employee");

Put lPut = new Put(Bytes.toBytes("mahesh"));
lPut.add(Bytes.toBytes("f"), Bytes.toBytes("age"), Bytes.toBytes(25));
lPut.add(Bytes.toBytes("f"), Bytes.toBytes("desg"), Bytes.toBytes("dev"));
remoteht.put(lPut);

在hbase shell中显示age 25扫描mahesh存储为\x00\x00\x00\x19

hbase(main):006:0> scan 'employee'
ROW                   COLUMN+CELL
ganesh               column=f:age, timestamp=1467926618738, value=30
ganesh               column=f:desg, timestamp=1467926639557, value=mngr
mahesh               column=f:age, timestamp=1467926707712, value=\x00\x00\x00\x19
mahesh               column=f:desg, timestamp=1467926707712, value=dev
  1. 考虑到我将只在hbase中存储数字和字符串数据,将数字数据存储为byte[](如上述情况)或作为字符串存储确实有什么好处

    lPut.add(Bytes.toBytes("f"), Bytes.toBytes("age"), Bytes.toBytes("25"));  //instead of toBytes(25)
    
  2. 另外,为什么字符串按原样存储,byte[]即使使用Java API放置时也不能序列化

哈利尔

我认为您需要阅读有关hbase的更多信息。Hbase将所有内容存储为byte []。扫描表时,您会看到shell输出转换为字符串。有时,诸如整数之类的非字符串数据无法正确转换。但这只是hbase shell试图使其易于理解,在内部,所有内容都是byte []。所以

1-如果存储整数,则需要将它们存储为整数,因此它们始终使用4个字节;如果存储为字符串,则每个长度使用1个字节,也许是2个字节。

2-字符串如上所述被转换为byte [],所以这只是shell使您以这种方式考虑。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如果torrent有hashfails可以吗?

来自分类Dev

在字符串上使用in循环可以吗?

来自分类Dev

比较C中的指针和整数可以吗?

来自分类Dev

作为SQL Server存储过程名称,“ getDate”可以吗?

来自分类Dev

将/ var / tmp存储在SSD上可以吗?

来自分类Dev

在Xlib中为颜色使用原始RGB可以吗?

来自分类Dev

将变量设置为 var=var=value 可以吗?

来自分类Dev

选择带有列的多个HTML-可以吗?

来自分类Dev

没有Logstash的Kibana + Elasticsearch可以吗?

来自分类Dev

带有HTML实体名称的HtmlEncode,可以吗?

来自分类Dev

在基类上有虚拟异步方法可以吗?

来自分类Dev

数组中有重复项可以吗?

来自分类Dev

这个查询可以吗?(SQL中有多个JOIN)

来自分类Dev

Coffeescript Object作为私有成员,可以吗?

来自分类Dev

带有参数的QueryDSL请求,可以吗?

来自分类Dev

没有fclose()的FILE *重新分配可以吗?

来自分类Dev

具有与声明的属性同名的方法变量可以吗?

来自分类Dev

带有HTML实体名称的HtmlEncode,可以吗?

来自分类Dev

带有可拖动窗口的Fancybox 2,可以吗?

来自分类Dev

选择带有列的多个HTML-可以吗?

来自分类Dev

数组中有重复项可以吗?

来自分类Dev

没有分区号的mkfs可以吗?

来自分类Dev

没有重新压缩的ImageMagick / Mogrify条带可以吗?

来自分类Dev

带有参数的QueryDSL请求,可以吗?

来自分类Dev

没有链接到Github的Plunker帐户:可以吗?

来自分类Dev

在SQL WHERE {params}中有很多参数可以吗?

来自分类Dev

将控制器名称作为字符串可以吗?

来自分类Dev

在ABC类中有collection <ABC>可以吗?这是好习惯吗?

来自分类Dev

有人可以解释:strstr“ \`cat / proc / cmdline \`” rd.live.image可以吗?

Related 相关文章

  1. 1

    如果torrent有hashfails可以吗?

  2. 2

    在字符串上使用in循环可以吗?

  3. 3

    比较C中的指针和整数可以吗?

  4. 4

    作为SQL Server存储过程名称,“ getDate”可以吗?

  5. 5

    将/ var / tmp存储在SSD上可以吗?

  6. 6

    在Xlib中为颜色使用原始RGB可以吗?

  7. 7

    将变量设置为 var=var=value 可以吗?

  8. 8

    选择带有列的多个HTML-可以吗?

  9. 9

    没有Logstash的Kibana + Elasticsearch可以吗?

  10. 10

    带有HTML实体名称的HtmlEncode,可以吗?

  11. 11

    在基类上有虚拟异步方法可以吗?

  12. 12

    数组中有重复项可以吗?

  13. 13

    这个查询可以吗?(SQL中有多个JOIN)

  14. 14

    Coffeescript Object作为私有成员,可以吗?

  15. 15

    带有参数的QueryDSL请求,可以吗?

  16. 16

    没有fclose()的FILE *重新分配可以吗?

  17. 17

    具有与声明的属性同名的方法变量可以吗?

  18. 18

    带有HTML实体名称的HtmlEncode,可以吗?

  19. 19

    带有可拖动窗口的Fancybox 2,可以吗?

  20. 20

    选择带有列的多个HTML-可以吗?

  21. 21

    数组中有重复项可以吗?

  22. 22

    没有分区号的mkfs可以吗?

  23. 23

    没有重新压缩的ImageMagick / Mogrify条带可以吗?

  24. 24

    带有参数的QueryDSL请求,可以吗?

  25. 25

    没有链接到Github的Plunker帐户:可以吗?

  26. 26

    在SQL WHERE {params}中有很多参数可以吗?

  27. 27

    将控制器名称作为字符串可以吗?

  28. 28

    在ABC类中有collection <ABC>可以吗?这是好习惯吗?

  29. 29

    有人可以解释:strstr“ \`cat / proc / cmdline \`” rd.live.image可以吗?

热门标签

归档