开发者学堂课程【HBase入门教程:HBase Protobuf_1】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/397/detail/5089
HBase Protobuf_1
内容介绍
一、解疑
二、Protobuf
一、解疑
查看 phone 表的数据
scan ‘phone’
一行数据
186997321279223370583159845807 column=cfl:prium,timestamp=1478681870662,value=17017869843
186997321279223370583159845807 column=cf1:time,timestamp=1478681870662
,value=20160125120850
186997321279223370583159845807 column=cfl:type,timestamp=1.478681870662
,value=1
每个作为一个列来存储,分散来进行存储,大部分存储空间被 rowkey 占用。
将 prium、time、type 糅合成一个列封装起来,就只用对应一个 cell ,便节省了存储空间。
每存储一个 cfl 都带一个 rowkey ,列族、列名等等这些信息,每一个 cfl 对应的 rowkey, 列族、列名、操作、版本也就是 value,最终才是一个 second 的值。本身存的值就很短,前面的 rowkey 很长,这样的设计最终,大部分的存储空间被rowkey 所占用,实际上的数据很少。
二、Protobuf
1.简介
Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化。它很适合做数据存储或 RPC 数据交换格式。可用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。目前提供了 C++ 、 Java 、 Python 三种语言的 APl 。
2.安装 Google Protocol Buffer
在网站 http/lcode google.com'pIprotobufldownloadslist 上可以下载 Protobuf 的源代码。然后解压编译安装便可以使用它了。安装步骤如下所示,
tar.-xzt protobuf-2.1.0.tar.gz
cd protobuf-2.1.0
./configure --prefix=$INSTALL_DIR
make .
make check
make install
3.书写 .proto 文件
首先需要编写一个 proto 文件,定义程序中需要处理的结构化数据,在 protobuf 的术语中,结构化数据被称为 Message。proto 文件非常类似 java 或者 C 语言的数据定义。
package com.sxt.hbase;
message helloworld
{
requiced int32 id = 1; //ID
required string str = 2; // str
optional int32 opt = 3; //optional field
}
4.嵌套 Message 的例子
message Person {
//一天通话详单
required string name = 1;
required int32 id = 2; //unique 1D number for this person.
optiona1 string email = 3;
reneated PhoneNumeber phone = 4;
message PhoneNumber {
//通话详单
required. string number = 1;
optiona1 PhoneType type = 2 [default = HOME];
}
}
package com.sxt.hbase;
message pdetail {
required string pnum = 1;
required string time = 2;
required string type = 3;
}
message pday {
repeated pdetail plist = 1;
}