導航:首頁 > 程序命令 > hbase條件查詢命令

hbase條件查詢命令

發布時間:2022-12-31 12:07:16

1. hbase如何實現group by和order by等的功能

Hbase是不支持條件查詢、聚集操作和Order by查詢的!
Hbase查詢方式只有三種:根據主鍵,根據主鍵范圍和全表。

2. hbase資料庫查詢命令有什麼

您好,對於你的遇到的問題,我很高興能為你提供幫助,我之前也遇到過喲,以下是我的個人看法,希望能幫助到你,若有錯誤,還望見諒!。展開全部

  1. select

  2. *

  3. from

  4. a

  5. where

  6. 列名

  7. <>0

  8. --<>標示不等於

  9. 2.--not

  10. in

  11. select

  12. *

  13. from

  14. a

  15. where

  16. 列名

  17. not

  18. in(0)

  19. --這樣是用索

  20. 不用。

  21. 3.--子

  22. where

  23. select

  24. *

  25. from

  26. a

  27. where

  28. a

  29. not

  30. in

  31. (select

  32. 列名from

  33. a

  34. where

  35. a

  36. ='1')非常感謝您的耐心觀看,如有幫助請採納,祝生活愉快!謝謝!

3. Hbase shell查詢命令 如何顯示整張表的某一列限定符的內容

1.hadoop是分布式平台,就把計算和存儲都由hadoop自動調節分布到接入的計算機單元中
2.hbase是hadoop上實現的kv資料庫
3.hbase+hadoop無需再與mysql搭配了, 而且kv資料庫與傳統關系資料庫區別很大
4.hadoop+hbase是分布式計算與分布式資料庫存儲的組合
5.增刪查改都是真的hbase的,

4. hbase 多條件查詢or 怎麼過濾掉不需要查的列

hbase的region是按行劃分,而非按列,如果你讀取指定一行的所有列數據,regionServer雖然無法保證你的所有數據都在一個HFile中,但是至少是在一個Region中。但是具體的HFile所在的hdfs的節點那就不是HBase關心的事了,因為HBase的存儲是依賴與hdfs,所以底層存儲讀取的事會由NameNode操心,NameNode會考慮就近原則,而提供最高效的數據讀取策略。
你的數據傳輸是必然,但是HBase不會計算,計算是發生在你將想要的數據獲取到之後再自行進行計算的。你讀取大量數據必然會有大量數據傳輸,HBase只是將提供了一種高效的數據讀取策略,盡量減小數據傳輸量

5. hbase查詢,只能以行鍵為條件么

沒辦法,hbase只對行健做索引,且查詢只能根據行健或者行健范圍進行查詢

6. 如何用hive查詢hbase中的數據

第一步,啟動hadoop,命令:./start-all.sh
第二步,啟動hive,命令:
./hive --auxpath /home/dream-victor/hive-0.6.0/lib/hive_hbase-handler.jar,/home/dream-victor/hive-0.6.0/lib/hbase-0.20.3.jar,/home/dream-victor/hive-0.6.0/lib/zookeeper-3.2.2.jar -hiveconf hbase.master=127.0.0.1:60000
這里,-hiveconf hbase.master=指向自己在hbase-site.xml中hbase.master的值
第三步,啟動hbase,命令:./start-hbase.sh
第四步,建立關聯表,這里我們要查詢的表在hbase中已經存在所以,使用CREATE EXTERNAL TABLE來建立,如下:
CREATE EXTERNAL TABLE hbase_table_2(key string, value string)
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping" = "data:1")
TBLPROPERTIES("hbase.table.name" = "test");

�0�2hbase.columns.mapping指向對應的列族;多列時,data:1,data:2;多列族時,data1:1,data2:1;
�0�2hbase.table.name指向對應的表;
�0�2hbase_table_2(key string, value string),這個是關聯表
我們看一下HBase中要查詢的表的結構,

7. HBase中顯示表的指令是

  1. 進入hbase shell命令界面:hbase shell

2. 查看錶格:list

3. 查看所有命令:help

4. 創建表格(如果不記得命令格式 可以直接輸入create 系統會給出提示和示例):create 'test','f1','f2','f3'

創建了一個表名為test 有f1 f2 f3三個列族的表

5. 查看錶格結構信息:desc 'test'

8. HBase條件查詢(多條件查詢)

轉 https://blog.csdn.net/PirateLeo/article/details/7956965

文中可能涉及到的API:

Hadoop/HDFS: http://hadoop.apache.org/common/docs/current/api/

HBase: http://hbase.apache.org/apidocs/index.html?overview-summary.html

Begin!

HBase的查詢實現只提供兩種方式:

1、按指定RowKey獲取唯一一條記錄,get方法(org.apache.hadoop.hbase.client.Get)

2、按指定的條件獲取一批記錄,scan方法(org.apache.hadoop.hbase.client.Scan)

實現條件查詢功能使用的就是scan方式,scan在使用時有以下幾點值得注意:

1、scan可以通過setCaching與setBatch方法提高速度(以空間換時間);

2、scan可以通過setStartRow與setEndRow來限定范圍。范圍越小,性能越高。

通過巧妙的RowKey設計使我們批量獲取記錄集合中的元素挨在一起(應該在同一個Region下),可以在遍歷結果時獲得很好的性能。

3、scan可以通過setFilter方法添加過濾器,這也是分頁、多條件查詢的基礎。

下面舉個形象的例子:

我們在表中存儲的是文件信息,每個文件有5個屬性:文件id(long,全局唯一)、創建時間(long)、文件名(String)、分類名(String)、所有者(User)。

我們可以輸入的查詢條件:文件創建時間區間(比如從20120901到20120914期間創建的文件),文件名(「中國好聲音」),分類(「綜藝」),所有者(「浙江衛視」)。

假設當前我們一共有如下文件:

內容列表
ID CreateTime Name Category UserID
1 20120902 中國好聲音第1期 綜藝 1
2 20120904 中國好聲音第2期 綜藝 1
3 20120906 中國好聲音外卡賽 綜藝 1
4 20120908 中國好聲音第3期 綜藝 1
5 20120910 中國好聲音第4期 綜藝 1
6 20120912 中國好聲音選手采訪 綜藝花絮 2
7 20120914 中國好聲音第5期 綜藝 1
8 20120916 中國好聲音錄制花絮 綜藝花絮 2
9 20120918 張瑋獨家專訪 花絮 3
10 20120920 加多寶涼茶廣告 綜藝廣告 4

這里UserID應該對應另一張User表,暫不列出。我們只需知道UserID的含義:

1代表 浙江衛視; 2代表 好聲音劇組; 3代表 XX微博; 4代表 贊助商。
調用查詢介面的時候將上述5個條件同時輸入find(20120901,20121001,"中國好聲音","綜藝","浙江衛視")。

此時我們應該得到記錄應該有第1、2、3、4、5、7條。第6條由於不屬於「浙江衛視」應該不被選中。

我們在設計RowKey時可以這樣做:採用UserID + CreateTime + FileID組成rowKey,這樣既能滿足多條件查詢,又能有很快的查詢速度。

需要注意以下幾點:

1、每條記錄的RowKey,每個欄位都需要填充到相同長度。假如預期我們最多有10萬量級的用戶,則userID應該統一填充至6位,如000001,000002...

2、結尾添加全局唯一的FileID的用意也是使每個文件對應的記錄全局唯一。避免當UserID與CreateTime相同時的兩個不同文件記錄相互覆蓋。

按照這種RowKey存儲上述文件記錄,在HBase表中是下面的結構:

rowKey(userID 6 + time 8 + fileID 6) name category ....

00000120120902000001

00000120120904000002

00000120120906000003

00000120120908000004

00000120120910000005

00000120120914000007

00000220120912000006

00000220120916000008

00000320120918000009

00000420120920000010

怎樣用這張表?

在建立一個scan對象後,我們setStartRow(00000120120901),setEndRow(00000120120914)。

這樣,scan時只掃描userID=1的數據,且時間范圍限定在這個指定的時間段內,滿足了按用戶以及按時間范圍對結果的篩選。並且由於記錄集中存儲,性能很好。

然後使用SingleColumnValueFilter(org.apache.hadoop.hbase.filter.SingleColumnValueFilter),共4個,分別約束name的上下限,與category的上下限。滿足按同時按文件名以及分類名的前綴匹配。

(注意:使用SingleColumnValueFilter會影響查詢性能,在真正處理海量數據時會消耗很大的資源,且需要較長的時間。

在後續的博文中我將多舉幾種應用場景下rowKey的,可以滿足簡單條件下海量數據瞬時返回的查詢功能)

如果需要分頁還可以再加一個PageFilter限制返回記錄的個數。

以上,我們完成了高性能的支持多條件查詢的HBase表結構設計。

9. 如何獲取hbase數據查詢 語句

get命令和HTable類的get()方法用於從HBase表中讀取數據。使用 get 命令,可以同時獲取一行數據。它的語法如下:
get 』<table name>』,』row1』

下面的例子說明如何使用get命令。掃描emp表的第一行。
hbase(main):012:0> get 'emp', '1'

COLUMN CELL

personal : city timestamp=1417521848375, value=hyderabad

personal : name timestamp=1417521785385, value=ramu

professional: designation timestamp=1417521885277, value=manager

professional: salary timestamp=1417521903862, value=50000

4 row(s) in 0.0270 seconds

讀取指定列
下面給出的是語法,使用get方法讀取指定列。
hbase>get 'table name', 『rowid』, {COLUMN => 『column family:column name 』}

下面給出的示例,是用於讀取HBase表中的特定列。
hbase(main):015:0> get 'emp', 'row1', {COLUMN=>'personal:name'}

COLUMN CELL

personal:name timestamp=1418035791555, value=raju

10. hbase如何根據某個列的值,查詢出這個列的ro

剛才理解錯了,你是要在C列顯示對應A列的B列值,修改一下答案
在c列第一個單元格C1復制如下公式:
=VLOOKUP(A1,sheet1!$A$1:$B$n,2,0)
其中n為A列最後一個單元格行數
然後把B1向下填充到其他B列單元格,公示應該會自動變為
=VLOOKUP(A2,sheet1!$A$1:$B$n,2,0)
=VLOOKUP(A3,sheet1!$A$1:$B$n,2,0)
......
=VLOOKUP(An,sheet1!$A$1:$B$n,2,0)
這樣應該可行,我沒試驗過你這種情況。你應該仔細看看VLOOKUP()這個函數的用法

下面是我給別人寫的,不過對方說沒看懂,你看看:
如果你有一個數據表,而另一個表格需要自動讀取這個數據表內的數據,函數VLOOKUP()就很有用了。
下面簡單說一下:
函數VLOOKUP()用法:
例子 公式如下
=VLOOKUP(F5,Sheet2!$F$4:$W$957,2,0)
其中第一個參數F5為查找值,即使用該公式的單元格內的數據是根據F5單元格內的數據查找出來的,例如你把姓名放在F列,其中F5是一個叫張三的人,G列是身份證號。G5要查找張三的身份證號,就可以在G5用函數VLOOKUP()
第二個參數是數據表,就是由哪一個數據表的哪幾列數據為查找范圍,【Sheet2!】就是數據表名,$F$4(F4)就是范圍的左上角單元格,$W$957(W957)就是右下角單元格,查找范圍就是在這個矩形內。其中F列數據必須是第一個參數F5的比照列,簡單來說就是第一個參數F5的數值應該在查找的數據表的F列內。且F列必須是查找范圍的第一個列該公式才起作用。舉例你要查找張三,那麼張三在Sheet2數據表查找范圍內的所在列必須是查找范圍內的第一列。F4寫成$F$4是為了固定該單元格,否則在復制公式的時候excel會自動遞加單元格數值,F4在復制的時候可能會變成F5、F6...,造成查找范圍改變
第三個參數是列數,就是該函數返回的是第幾列的數值,該列數是相對列數,即查找范圍內的第幾列。例如Sheet2工作表內的F列在整個表格內屬於第6列,但在查找范圍內的相對列數是第1列。假如張三的身份證在G列內,那麼就是返回查找范圍的第二列。
第四個參數是匹配條件,一般為0。

下面舉一個具體使用的例子。
假設你有一個excel文件,裡面的sheet1工作表記錄的是單位人員姓名及人員身份證號,你現在需要創建一個新excel文件,記錄單位人員的三險一金,裡面需要輸入人員的身份證號,如果再一個一個輸入,重復勞動效率低不說,很有可能輸錯了,這時候你就可以從以前那個excel文件中讀取這些人員的身份證號。
在新表中先輸入人員姓名(如果你用人員序號作比對的話,姓名也可以自動讀取),然後在需要輸入身份證號的地方點擊上面的【fx】,出現【插入函數】的對話框,在類別中選擇【查找和引用】,最後一個就是VLOOKUP,選中它,點【確定】,然後出現【函數參數】對話框,【Lookup-value】為第一個參數,點擊旁邊的表格紅箭頭圖標,選中新表中需要查找身份證號的那個人的姓名單元格;【table-array】為第二個參數,顧名思義是表格數組,包含行列的一個范圍,就是查找范圍,點擊旁邊表格紅箭頭圖標,在老表sheet1中框選所有姓名和身份證號,保證老表中姓名在第一列;【col-index-num】為第三個參數,看看老表中身份證號在選擇范圍是第幾列,就寫上幾。假如老表內身份證號緊跟著姓名,因為姓名列是范圍內的第一列,那麼身份證號就是第二列;【range-lookup】為第四個參數,寫上0。全部弄好以後,回到新表看看身份證號是不是已經自動讀出來了。如果沒有一是查查這個人在老表中有沒有,名字有沒有空格,還有你選擇的第三個參數列數對不對,注意有沒有隱藏列,因為隱藏列雖然看不到,但是也計算在列數裡面。如果沒問題,將公示復制到所有需要讀取身份證的單元格內。
這樣有一個問題,因為你新表讀取的是文件外的數據,所以必須保證老表文件位置不能變動,否則新表就不知道去哪裡找數據了。解決方法有三個,一是保證老表文件位置永遠不動(廢話);二是在操作前先把老表數據復制到新表所在的文件內,單獨作為一個sheet工作表存在,然後再查找新表復制後的數據,因為在同一個文件內,不用擔心數據源丟失問題;三是不復制老表,新表讀取數據後,選中讀取的數據,點擊【復制】,然後在原位置點擊【選擇性粘貼】,選中粘貼【數據】,這樣公式會被公式讀取的數據覆蓋,就和數據源沒有關系了。
還會遇到一個問題,如果老表沒有數據,比如說老表內李四這個人當時就沒有輸入身份證號,那麼新表內李四用公式查出來的身份證號並不是空,而是0,解決這個問題需要加一個if判斷語句,如下:
=IF(你的公式=0,"",你的原公式)
還有就是,如果數據查找出錯,會出現#N/A或者#VALUE,也可以用if語句取消,如下:
=IF(ISERROR(你的公式),"",你的公式)
不過不建議這樣做,有錯誤提示才能知道去查找公式是不是有問題,公式沒問題自然不會出現錯誤提示,沒必要人為取消。

閱讀全文

與hbase條件查詢命令相關的資料

熱點內容
dvd光碟存儲漢子演算法 瀏覽:757
蘋果郵件無法連接伺服器地址 瀏覽:962
phpffmpeg轉碼 瀏覽:671
長沙好玩的解壓項目 瀏覽:144
專屬學情分析報告是什麼app 瀏覽:564
php工程部署 瀏覽:833
android全屏透明 瀏覽:737
阿里雲伺服器已開通怎麼辦 瀏覽:803
光遇為什麼登錄時伺服器已滿 瀏覽:302
PDF分析 瀏覽:484
h3c光纖全工半全工設置命令 瀏覽:143
公司法pdf下載 瀏覽:381
linuxmarkdown 瀏覽:350
華為手機怎麼多選文件夾 瀏覽:683
如何取消命令方塊指令 瀏覽:349
風翼app為什麼進不去了 瀏覽:778
im4java壓縮圖片 瀏覽:362
數據查詢網站源碼 瀏覽:150
伊克塞爾文檔怎麼進行加密 瀏覽:892
app轉賬是什麼 瀏覽:163