Hbase數據模型及Hbase Shell

目錄

1 數據模型

1.1?相關名詞概念

1.2 模型分析

2 Hbase Shell操作

2.1 命名空間

2.2 表操作

2.2.1 創建表

2.2.2 更改表結構

2.2.3 表的其他操作

2.3 數據操作

2.3.1 添加數據(put)

2.3.2 刪除數據(delete)

2.3.3 獲取數據(get|scan)

3 過濾器

3.1 比較運算符和比較器

3.2 行鍵過濾器

3.3 列族與列過濾器

3.4 值過濾器

3.5 其他過濾器


1 數據模型

1.1?相關名詞概念

表(Table):類似于關型數據庫中的表

行(Row):以行鍵進行唯一標識,代表一個數據對象,按照字典順序由低到高存儲在表。

列族(Column Family):列的集合,支持動態擴展(無需預定義列的類型及數量,可隨意增刪),所有列默認以字符串形式存儲在表中,用戶可根據需求自行進行數據類型轉換。

列標識(Column Qualifier):沒有固定的數據類型,以二進制字節存儲,對列進行定位。

單元格(Cell):以行鍵、列族、列標識共同確定一個單元格,單元格沒有固定的數據類型,以二進制字節存儲,可用<Row Key,Column Family : Column Qualifier,Timestamp>來訪問。

時間戳(Timestamp):表示數據的版本信息,如不設置默認為當前時間。

1.2 模型分析

?與傳統關型數據庫的區別

關型數據庫Hbase
表結構和數據類型需要預定義表結構和數據類型不需要預定義
添加列需要修改表結構支持動態擴展
NULL占用存儲空間

NULL不占用存儲空間

面向行存儲面向列存儲

2 Hbase Shell操作

2.1 命名空間

????????關型數據庫中的所有表存儲在數據庫中,數據庫作為表的一個邏輯分組。Hbase中存在一種類似與數據庫的表的邏輯分組——命名空間。

list_namespace                    #查看所有的命名空間create_namespace 'ns'             #創建命名空間nslist_namespace_tables 'ns'        #查看ns命名空間下的所有表alter_namespace 'ns'              #更改命名空間nsdescribe_namespace 'ns'           #查看命名空間nsdrop_namespace 'ns'               #刪除命名空間ns

2.2 表操作

2.2.1 創建表

????????表名區分大小寫,所有的字符串都必須包含在單引號里。

#創建包含StuInfo,Grades兩個列族的Student表
create 'Student','StuInfo','Grades'#指定參數創建
create 'Student',{NAME => 'StuInfo',VERSION => 3},{NAME => 'Grades',VERSION => 3}

2.2.2 更改表結構

????????在對表進行更改或者刪除時,必須先禁用表,等修改之后必須解禁表。

#增加hobby列族
alter 'Student' , 'hobby'#刪除hobby列族(設置METHOD屬性的值)
alter 'Student' , {NAME => 'hobby' , METHOD => 'delete'}#修改Grades列族(通過修改屬性值實現)
alter 'Student' , {NAME => 'Grades' , VERSION => 3}

2.2.3 表的其他操作

????????Hbase表最少要包含一個列族,當表中只有一個列族的時候將無法刪除該表。

#刪除表
is_disable 'Student'    #查詢表是否被禁用
disable 'Student'       #設置表使之被禁用
enable 'Student'        #解禁表
drop 'Student'          #刪除表#清空表中的數據
truncate 'Student'#查看表是否存在
exists 'Student'#查看已有的表名
list#查看表的列族信息
describe 'Student'

2.3 數據操作

2.3.1 添加數據(put)

????????列支持動態擴展可以使之前未定義的值,列族則必須是提前創建好的。

????????put命令一次只能插入一個單元格的數據,單元格存在數據的情況下是修改數據

put 'Student' , '0001' , 'StuInfo:Name' , 'Tom Green' , 1|         |             |              |        |表名       行鍵        列族:列        修改后的值  時間戳

2.3.2 刪除數據(delete)

delete操作并不會馬上刪除數據,只是將對應的數據打上刪除標記(tombstone),只有在數據產生合并時,數據才會被刪除。

#刪除列族
刪除Student表里行鍵為0002的Grades列族數據
delete 'Student' , '0002' , 'Grades'#刪除單元格
刪除Student表里行鍵為0001、Grades列族成員為Math,并且時間戳小于等于2的數據
delete 'Student' , '0001' , 'Grades:Math' , 2#刪除一行
刪除Student表里行鍵為0001的一行數據
deleteall 'Student' , '0001'

2.3.3 獲取數據(get|scan)

????????get和scan命令都可以配合參數指定進行查詢想要更加精準的查詢就要配合過濾器進行查詢

#以行鍵為索引條件獲取一行信息
get 'Student' , '0001'#掃描全表的數據
scan 'Student'#配合參數指定查找信息
scan 'Student' , {COLUMN => 'StuInfo'}                         #指定列族
scan 'Student' , {COLUMN => 'StuInfo:Name'}                    #指定列
scan 'Student' , {LIMIT => 1}                                  #限制查詢返回的行數
scan 'Student' , {STARTROW => '0001' , ENDROW => '0003'}       #限制查詢返回的行范圍

3 過濾器

3.1 比較運算符和比較器

比較運算符描述? ? ??比較器描述
=等于BinaryComparator匹配完整字節數組
>大于BinaryPrefixComparator匹配字節數組前綴
>=大于等于BitComparator匹配比特位
<小于NullParator匹配空值
<=小于等于RegexStringComparator匹配正則表達式
!=不等于SubStringComparator匹配子串

過濾器語法:scan 'Student' , Filter => "過濾器 (比較運算符 ,?'比較器')"

注意引號的使用(單引還是雙引)

3.2 行鍵過濾器

#RowFilter(行鍵過濾器)
scan 'Student' , Filter => "RowFilter( = , 'substring:0001' )"
scan 'Student' , Filter => "RowFilter( > , 'binary:0001' )"#PrefixFilter(比較行鍵前綴)
查詢行鍵前綴為0001的所有行
scan 'Student' , Filter => "PrefixFilter('0001')"#KeyOnlyFilter(只返回鍵不返回值)
scan 'Student' , Filter => "KeyOnlyFilter()"#FirstKeyOnlyFilter(每行的第一列的數據信息)
scan 'Student' , Filter => "FirstKeyOnlyFilter()"#InclusiveStopFilter(終止行信息)
查詢0001到0002行的數據信息
scan 'Student' , {STARTROW => '0001' , Filter => "InclusiveStopFilter('binary:0002')"}

3.3 列族與列過濾器

#列族過濾器(用法與RowFilter類似)
scan 'Student' , Filter => "FamilyFilter( = , 'substring:Grades' )"#QualifierFilter(列標識過濾器)
scan 'Student' , Filter => "QualifierFilter( = , 'substring:Math' )"#ColumnPrefixFilter(比較列名前綴)
查詢列名前綴為'Ma'的所有行
scan 'Student' , Filter => "ColumnPrefixFilter('Ma')"#MultipleColumnPrefixFilter(指定多個前綴對列名進行過濾)
scan 'Student' , Filter => "MultipleColumnPrefixFilter('Ma','Ag')"#ColumnRangeFilter(按范圍過濾列名左閉右開)
查詢從Big前綴開始到Math前綴的前一列為止的所有數據
scan 'Student' , Filter => "ColumnRangeFilter('Big',true,'Math',false)"

3.4 值過濾器

#ValueFilter(值過值器)
查詢表中所有單元格的值為curry的數據
scan 'Student' , Filter => "ValueFilter( = , 'substring:curry' )"#SingleColumnValueFilter(指定列族和列名的值過濾)
查詢StuInfo列族中的Name列里單元格的值為curry的所有數據
scan 'Student' , Filter => "SingleColumnValueFilter('StuInfo','Name'= ,'substring:curry')"#SingleColumnValueExcludeFilter(指定列族和列名的值過濾)
查詢StuInfo列族中的Name列里除了單元格的值為curry的所有數據
scan 'Student',Filter=>"SingleColumnValueExcludeFilter('StuInfo','Name',=,'substring:curry')"

3.5 其他過濾器

#ColumnCountGetFilter(限制每個行返回的個數,在get方法中使用)
scan 'Student' , Filter => "FamilyFilter( = , 'substring:Grades' )"#TimestampsFilter(時間戳過濾)
scan 'Student' , Filter => "TimestampsFilter(1,4)"#InclusiveStopFilter(設置結束行,STARTROW和ENDROW的組合是左閉右開,STARTROW和InclusiveStopFilter的組合是左閉右閉)
查詢0001到0003行的數據
scan 'Student' , {STARTROW => '0001',Filter => "InclusiveStopFilter('0003')"}#PageFilter(對返回結果進行分頁)
scan 'Student' , {STARTROW => '0001',ENDROW => '0005'Filter => "PageFilter(3)"}#ColumnPaginationFilter(對一行的所有列進行分頁)
scan 'Student' , {STARTROW => '0001',ENDROW => '0005'Filter => "ColumnPaginationFilter(2,1)"}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/535157.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/535157.shtml
英文地址,請注明出處:http://en.pswp.cn/news/535157.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

非關型數據庫之Hbase

目錄 1 Hbase簡介 1.1 初識Hbase 1.2 Hbase的特性 2 HDFS專項模塊 2.1 HDFS的基本架構 2.1.1 HDFS各組件的功能&#xff1a; 2.2 HFDFS多種機制 2.2.1 分塊機制 2.2.2 副本機制 2.2.3 容錯機制 2.2.4 讀寫機制 3 Hbase組件及其功能 3.1 客戶端 3.2 Zookeeper 3.3 …

MongoDB Shell操作

目錄 1 數據庫操作 2 集合操作 3 文檔操作 3.1 插入文檔(insert|insertOne|insertMany) 3.2插入、刪除的循環操作 3.2 刪除文檔(remove|deleteOne|deleteMany) 3.3 更新文檔(update|save) 3.4 查詢文檔(find) 4 游標 5 索引 6 聚合 1 數據庫操作 當新創建的數據庫里…

MongoDB副本集、分片集的偽分布式部署(保姆級教程)

目錄 1 集群架構(概念篇) 1.1 MongoDB核心組件 1.2 主從復制 1.3 副本集 1.4 分片集 2 集群搭建 2.1 部署副本集(偽分布式) 2.2 分片集部署(偽分布式) 2.3 副本集與分片集區別 1 集群架構(概念篇) MongoDB有三種集群部署模式&#xff0c;分別是主從復制(Master-Slave)…

非關型數據庫之MongoDB

目錄 1 MongoDB簡介 1.1 初識MongoDB 1.2 MongoDB與傳統的關系型數據庫的區別 1.3 MongoDB存儲結構 1.4 BSON支持的數據類型 2 MongoDB Shell操作 3 MongoDB集群操作 1 MongoDB簡介 1.1 初識MongoDB MongoDB來源自英文單詞"Humongous”&#xff0c;譯為“龐大的”…

【手把手 腦把腦】教會你使用idea基于MapReduce的統計數據分析(從問題分析到代碼編寫)

目錄 1 編程前總分析 1.1 數據源 1.2 需要掌握的知識 1.2.1 Hadoop對比java的數據類型 1.2.2 MapReduce流程簡介 1.3.3 MapReduce流程細分 2 編碼階段 2.1 導入依賴 2.2 mapper 2.3 reducer 2.4 main 1 編程前總分析 1.1 數據源 英語,李沐,85,男,20 數學,李沐,54,男…

【細節拉滿】Hadoop課程設計項目,使用idea編寫基于MapReduce的學生成績分析系統(附帶源碼、項目文件下載地址)

目錄 1 數據源(學生成績.csv) 2 hadoop平臺上傳數據源 3 idea代碼 3.1 工程框架 3.2 導入依賴 3.3 系統主入口(menu) 3.4 六個mapreduce 3.4.1 計算每門成績的最高分、最低分、平均分(Mma) 3.4.2 計算每個學生的總分及平均成績并進行排序(Sas) 3.4.3 統計所有學生的信…

【單位換算】存儲單位(bit Byte KB MB GB TB PB EB ZB YB BB)時間單位(ms μs ns ps)長度單位(dm cm mm μm nm pm fm am zm ym)

存儲單位 相鄰單位相差2?&#xff0c;記憶時可以此類推 一字節等于八比特 1 Byte 8 bit 1KB 1024 B 2? B 1MB 1024 KB 2? B 1GB 1024 MB 2? B 1TB 1024 GB 2?? B 1PB 1024 TB 2?? B 1EB 1024 PB 2?? B 1ZB 1024 EB 2?? B 1YB 1024 ZB 2?? B 1B…

Git 的安裝、使用、分支、命令 一篇博客全都學會

目錄 1 版本控制 1.1 什么是版本控制 1.2 為什么需要版本控制 2 Git概述 2.1 Git的工作機制 2.2 分布式版本控制工具與集中式的區別 2.3 Git是如何誕生的 3 Git的安裝 4 Git常用命令 4.1 用戶簽名的設置和修改 4.2 查看用戶簽名的設置 4.3 初始化本地庫 4.4 添加、…

生成一個GitHub的token用于git推送本地庫至遠程庫

1 一步步選擇設置 2 使用鏈接直接跳轉到最后一步的設置頁 git push 的時候需要token&#xff0c;所以在GitHub上生成一個臨時的token 1 一步步選擇設置 2 使用鏈接直接跳轉到最后一步的設置頁 前提是你已經在這個瀏覽器上登陸了GitHub https://github.com/settings/tokens

都2021年了,還不會使用GitHub創建、推送、拉取、克隆遠程庫、團隊協作開發?

1 對自己的遠程庫操作 1.1 在GitHub上創建遠程庫 1.2 推送本地庫至遠程庫 1.3 拉取遠程庫到本地庫 1.4 克隆遠程倉庫到本地 2 對別人的遠程庫兩種操作方式 2.1 使用GitHub進行團隊內協作開發 2.2 使用GitHub進行跨團隊協作開發 眾所周知&#xff0c;GitHub是一個大型的國…

2021 最新 IDEA集成Gitee、Gitee遷移GitHub【圖文講解】

1 創建遠程庫 2 IDEA集成Gitee 2.1 安裝gitee插件并綁定賬號 2.2 IDEA推送本地庫至遠程庫的兩種方式 2.3 修改后推送本地庫至遠程庫 2.4 拉取遠程庫 2.5 使用IDEA克隆遠程庫 3 Gitee遷移GitHub的遠程庫的兩種方式 3.1 自己的賬戶之間遷移 3.2 使用鏈接進行遷移 3.3 強制刷…

只需五步學會Maven 3.6.1OR 3.6.3及其他版本的下載安裝與配置【圖文詳解】

第一步&#xff0c;下載并解壓縮包 ?第二步&#xff0c;配置兩個環境變量 ?第三步&#xff0c;測試是否安裝成功 ?第四步&#xff0c;指定本地倉庫的路徑 第五步&#xff0c;修改鏡像倉庫 第一步&#xff0c;下載并解壓縮包 Maven官方下載地址&#xff1a;https://mav…

只需四步完成java JDK1.8的下載安裝與配置【圖文詳解】

第一步&#xff0c;下載安裝包并安裝 第二步&#xff0c;安裝JDK 第三步&#xff0c;配置三個環境變量 第四步&#xff0c;測試是否安裝成功 第一步&#xff0c;下載安裝包并安裝 Oracle的官方下載地址&#xff1a;https://www.oracle.com/java/technologies/downloads/#ja…

從Maven中央倉庫網站下載jar包的兩種方式,將會伴隨java后端開發者的整個職業生涯

這個肥腸重要的網站就是&#xff1a;https://mvnrepository.com/ 下面我會以mysql-connector-java-8.0.26.jar為例&#xff0c;教會你使用兩種方式下載使用jar包資源 首先在搜索欄使用全稱或者是關鍵字對jar包進行搜索 選擇你想要的版本 方式一&#xff1a;導入pom文件依賴(…

2021 使用IDEA創建并編寫你的第一個Maven項目【圖文詳解】

1 使用IDEA創建你的第一個Maven項目 2 使用IDEA編寫一個Maven項目 1 使用IDEA創建你的第一個Maven項目 新建一個空白項目 File-->New-->Project-->Empty Project 在IDEA中配置JDK 在IDEA中配置Maven 新建一個Maven模塊 在test目錄下面新建一個resources文件夾 2 使…

能讓你的Intellij IDEA 起飛的幾個設置(設置背景 字體 快捷鍵 鼠標懸停提示 提示忽略大小寫 取消單行顯示)

1 設置主題(背景圖片) 2 設置字體 2.1 設置默認的字體及其大小、行間距**墻裂推薦** 2.2 設置字體大小可以隨意改變**墻裂推薦** 3 設置鼠標懸停提示 4 提示的時候忽略大小寫**墻裂推薦** ??5 取消單行顯示tabs**墻裂推薦** 6 修改類頭的文檔注釋信息 7 設置項目文…

控制臺:Unable to import maven project: See logs for details日志:Unable to create injector, see the follow

問題描述&#xff1a; 當我在使用IDEA 完成一個Maven項目的時候&#xff0c;在第一步的pom.xml文件導入依賴時就發生了這個問題&#xff0c;彈窗彈出Uable to import maven project 控制臺報 Unable to import maven project: See logs for details的異常。 既然人家都讓查看l…

Maven基礎教程

1 Maven簡介 2 Maven基礎概念 2.1 倉庫 2.2 坐標 3 依賴的相關知識點 4 生命周期與插件 5 使用Inteli idea完成第一個Maven項目 1 Maven簡介 Maven的本質就是一個項目管理工具&#xff0c;用于將項目開發和管理過程抽象成一個項目對象模型(project object model POM) Ma…

java實現編輯距離算法(levenshtein distance),計算字符串或者是文本之間的相似度【附代碼】

編輯距離算法其實就是&#xff0c;在規定的編輯操作(替換字符串、插入字符串、刪除字符串)中&#xff0c;經過幾步可以把一個字符串變成另一個字符串&#xff0c;而這個所需的步數就是你的編輯距離。 測試樣例&#xff1a; str1 abc str2 yabd 表里的每一個值都代表著將s…

【Java從入門到頭禿專欄 】(一)學在Java語法之前

目錄 1 初識Java 2 Java環境JDK 3 Java規范 1 初識Java Java是美國的sun(Stanford University Network)公司在1995年推出的一門計算機高級編程語言&#xff0c;雖然說當時參與開發Java的人員有好幾名&#xff0c;但是業內公認的Java之父是詹姆斯高斯林(James Gosling)。 Jav…