第十二課記錄 HBase的Java編程接口

一、僞分佈模式

        修改參數: 
                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();
		
	}






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章