第十二课记录HBase的Java编程接口

xiaoxiao2021-02-28  80

一、伪分布模式

        修改参数:                  1) 配置conf/hbase-env.sh文件                         #vi hbase-env.sh                         29行:  export JAVA_HOME=/usr/java/jdk1.8.0_144                         123行: export HBASE_MANAGES_ZK=true  #因为HBase自带了一个ZK                   2) 配置conf/hbase-site.xml文件                         #vi hbase-site.xml文件                           <property>                                 <name>hbase.rootdir</name>                                 <value>hdfs://192.168.73.132:9000/hbase</value>                                 <description>保存数据到HDFS的hbase目录下</description>                         </property>                         <property>                                 <name>hbase.cluster.distributed</name>                                 <value>true</value>                                 <description>表示现在的HDFS是否为分布上环境? (伪分布式也属于分布式)</description>                         </property>                         <property>                                 <name>hbase.zookeeper.quorum</name>                                 <value>192.168.73.132</value>                                 <description>表示ZK所在的主机</description>                         </property>                         <property>                                 <name>dfs.replication</name>                                 <value>1</value>                                 <description>冗余度,数据复制份数</description>                         </property>                    3) 配置conf/regionservers                         #vi regionservers                         192.168.73.132                   4) 启动Hadoop                         #./start-all.sh                    5) 启动HBase                         #./start-hbase.sh                         #hbash shell                    6) HBase Web Console 控制台                         http://192.168.73.132:60010                    7) Hive是一个数据仓库(了解)   

二、 HBase 常用命令

                1) 显示所有Table与查看HBase 表结构, 在HBase中没有数据类型, 都是二进制                         SHELL> list                         SHELL> describe 'student'                    2) put 插入数据                         向student表中插入信息,row key为stu001,列族info中添加name列标示符,值为zhangsan                         SHELL> put 'student', 'stu001', 'info:name', 'zhangsan'

                        

                        向student表中插入信息,row key为stu001,列族info中添加gender列标示符,值为female

                        SHELL> put 'student', 'stu001', 'info:gender', 'female'

     

                        向student表中插入信息,row key为stu001,列族info中添加age列标示符,值为20

                        SHELL> put 'student', 'stu001', 'info:age', 20                    3) get 查看字段版本                         SHELL> put 'student', 'stu001', 'info:name', 'zhangsan2'                         SHELL> put 'student', 'stu001', 'info:name', 'zhangsan3'                         SHELL> get 'user','rk0001',{COLUMN=>'info',VERSIONS=>3}                         输出结果:                                 COLUMN                      CELL                                                                                                         info:chinese               timestamp=1504169617567, value=80                                                                            info:gender                timestamp=1504170735091, value=female                                                                        info:name                  timestamp=1504170619059, value=lisi                                                                          3 row(s) in 0.0340 seconds                    4) get 获取指定行的数据 得指定行                         SHELL> get 'student','stu001','info'                    5) 查看指定列族 指定字段的消息                         SHELL> get 'student', 'stu001', 'info:age'                   6) 查看一段时间里的记录 通过时间戳范围查找                         SHELL> get 'student', 'stu001',{COLUMN=>'info',VERSIONS=>3,TIMERANGE=>[1477654000000],[1477654111111]}                   7) 查看指定行中 字段名称中含有 a的字段                         SHELL> get 'student', 'stu001', {FILTER => "(QualifierFilter(=,'substring:a'))"}                 8) 返回字段的value值是指定的值的字段                         SHELL> get 'student', 'stu001', {FILTER => "ValueFilter(=, 'binary:zhangsan3')"}                   9) scan 查询表中的所有消息                           SHELL> scan 'student'                   10) 查询列族为info,查询指定的rowkey范围                         SHELL> scan 'student', {COLUMN=>'info', STARTROW=>'stu001', ENDROW=>'stud003'}                    11) 查询表中一 rk 开头的行                         SHELL> scan 'student', {FILTER=>"PrefixFilter('stu')"}                   12) delete 删除指定对象的值(可以为表,行,列,对应的值,另外也可以指定时间戳的值)                         (a) 删除指定字段的值                         SHELL> delete 'student','stu001','info:age'                            (b) 通过时间戳删除指定的版本                         SHELL> delete 'student', 'stu001', 'info:name', 1504170735091                            (c) 向表中添加列族                         SHELL> alter 'student', 'data'                            (d) 删除列族                           SHELL> alter 'student', 'delete'=>'data'                         同等                         SHELL> alter 'student',{NAME=>'data',METHOD=>'delete'}                            (e) 清空表中数据                         SHELL> truncate 'student'                            (f) 删除表, 删除表之前必须先禁用                         SHELL> disable 'student'                         SHELL> drop 'student'      

三、简单写一个Java程序

@Test public void testScan() throws Exception { System.setProperty("hadoop.home.dir", "E:\\Program Files\\hadoop-2.7.0"); // 指定HBase的HMaster地址 ----> Zookeeper地址 Configuration conf = new Configuration(); conf.set("hbase.zookeeper.quorum", "192.168.73.132"); // 获取HBase客户端 ----> HTable HTable table = new HTable(conf, "student"); // 创建一个扫描器 Scan scan = new Scan(); // scan.setFilter(filter); -----> 指定Filter过滤器 // 相当于: JDBC: ResultSet 一个集合 ResultScanner rs = table.getScanner(scan); for (Result r : rs) { String name = Bytes.toString(r.getValue(Bytes.toBytes("info"), Bytes.toBytes("name"))); System.out.println(name); } table.close(); }

转载请注明原文地址: https://www.6miu.com/read-56464.html

最新回复(0)