2021年大数据HBase(十一):Apache Phoenix的视图操作
全網(wǎng)最詳細(xì)的大數(shù)據(jù)HBase文章系列,強(qiáng)烈建議收藏加關(guān)注!
新文章都已經(jīng)列出歷史文章目錄,幫助大家回顧前面的知識重點(diǎn)。
目錄
系列歷史文章
前言
Apache Phoenix的視圖操作
一、應(yīng)用場景
二、視圖介紹
三、語法說明
四、建立MOMO_CHAT:MSG的視圖
1、參考SQL語句
2、嘗試查詢一條數(shù)據(jù)
五、完成陌陌查詢案例
1、需求
2、編寫SQL實(shí)現(xiàn)陌陌案例
3、使用java連接Phoenix:?
系列歷史文章
2021年大數(shù)據(jù)HBase(十七):HBase的360度全面調(diào)優(yōu)
2021年大數(shù)據(jù)HBase(十六):HBase的協(xié)處理器(Coprocessor)
2021年大數(shù)據(jù)HBase(十五):HBase的Bulk Load批量加載操作
2021年大數(shù)據(jù)HBase(十四):HBase的原理及其相關(guān)的工作機(jī)制
2021年大數(shù)據(jù)HBase(十三):HBase讀取和存儲數(shù)據(jù)的流程
2021年大數(shù)據(jù)HBase(十二):Apache Phoenix 二級索引
2021年大數(shù)據(jù)HBase(十一):Apache Phoenix的視圖操作
2021年大數(shù)據(jù)HBase(十):Apache Phoenix的基本入門操作
2021年大數(shù)據(jù)HBase(九):Apache Phoenix的安裝
2021年大數(shù)據(jù)HBase(八):Apache Phoenix的基本介紹
2021年大數(shù)據(jù)HBase(七):Hbase的架構(gòu)!【建議收藏】
2021年大數(shù)據(jù)HBase(六):HBase的高可用!【建議收藏】
2021年大數(shù)據(jù)HBase(五):HBase的相關(guān)操作-JavaAPI方式!【建議收藏】
2021年大數(shù)據(jù)HBase(四):HBase的相關(guān)操作-客戶端命令式!【建議收藏】
2021年大數(shù)據(jù)HBase(三):HBase數(shù)據(jù)模型
2021年大數(shù)據(jù)HBase(二):HBase集群安裝操作
2021年大數(shù)據(jù)HBase(一):HBase基本簡介
前言
?2021大數(shù)據(jù)領(lǐng)域優(yōu)質(zhì)創(chuàng)作博客,帶你從入門到精通,該博客每天更新,逐漸完善大數(shù)據(jù)各個(gè)知識體系的文章,幫助大家更高效學(xué)習(xí)。
Apache Phoenix的視圖操作
一、應(yīng)用場景
因?yàn)槲覀冎耙呀?jīng)創(chuàng)建了 MOMO_CHAT:MSG 表,而且數(shù)據(jù)添加的方式都是以PUT方式原生API來添加的。故此時(shí),我們不再需要再使用Phoenix創(chuàng)建新的表,而是使用Phoenix中的視圖,通過視圖來建立與HBase表之間的映射,從而實(shí)現(xiàn)數(shù)據(jù)快速查詢。
二、視圖介紹
我們可以在現(xiàn)有的HBase或Phoenix表上創(chuàng)建一個(gè)視圖。表、列蔟和列名必須與現(xiàn)有元數(shù)據(jù)完全匹配,否則會出現(xiàn)異常。當(dāng)創(chuàng)建視圖后,就可以使用SQL查詢視圖,和操作Table一樣。
三、語法說明
create view "my_hbase_table" (rowkey varchar primary key,列族.列名1 數(shù)據(jù)類型,列族.列名2 數(shù)據(jù)類型,....
)
考慮以下幾個(gè)問題:
- 視圖如何映射到HBase的表? 視圖的名字必須是:命名空間.表名
- 視圖中的列如何映射到HBase的列蔟和列? ?列名必須是:列蔟.列名
- 視圖中的類如何映射到HBase的ROWKEY? 指定某個(gè)列為primary key,自動(dòng)映射ROWKEY
四、建立MOMO_CHAT:MSG的視圖
1、參考SQL語句
-- 創(chuàng)建MOMO_CHAT:MSG視圖
CREATE VIEW
IFNOT EXISTS "MOMO_CHAT"."MSG" ("pk" VARCHAR PRIMARY KEY, --?指定ROWKEY映射到主鍵"C1"."msg_time" VARCHAR,"C1"."sender_nickyname" VARCHAR,"C1"."sender_account" VARCHAR,"C1"."sender_sex" VARCHAR,"C1"."sender_ip" VARCHAR,"C1"."sender_os" VARCHAR,"C1"."sender_phone_type" VARCHAR,"C1"."sender_network" VARCHAR,"C1"."sender_gps" VARCHAR,? ? "C1"."receiver_nickyname" VARCHAR,"C1"."receiver_ip" VARCHAR,"C1"."receiver_account" VARCHAR,"C1"."receiver_os" VARCHAR,"C1"."receiver_phone_type" VARCHAR,"C1"."receiver_network" VARCHAR,"C1"."receiver_gps" VARCHAR,"C1"."receiver_sex" VARCHAR,"C1"."msg_type" VARCHAR,"C1"."distance" VARCHAR );
2、嘗試查詢一條數(shù)據(jù)
SELECT * FROM "MOMO_CHAT"."MSG" LIMIT 1;
五、完成陌陌查詢案例
1、需求
根據(jù)日期、發(fā)送人賬號、接收人賬號查詢歷史消息
2、編寫SQL實(shí)現(xiàn)陌陌案例
SELECTC1."sender_account",C1."receiver_account",C1."msg_time",C1."message"
FROMMOMO_CHAT.MSG
WHEREsubstr( C1."msg_time", 0, 10 ) = '2021-07-16' AND C1."sender_account" = '18461866438' AND C1."receiver_account" = '13641568674';
3、使用java連接Phoenix:?
@Override
public List<Msg> getMessage(String date, String sender, String receiver) throws Exception {Class.forName(PhoenixDriver.class.getName()); Connection connection = DriverManager.getConnection("jdbc:phoenix:node1:2181");PreparedStatement ps = connection.prepareStatement("SELECT * FROM MOMO_CHAT.MSG T WHERE substr(\"msg_time\", 0, 10) = ? " + "AND T.\"sender_account\" = ? " + "AND T.\"receiver_account\" = ? ");ps.setString(1, date); ps.setString(2, sender);ps.setString(3, receiver); ResultSet rs = ps.executeQuery(); List<Msg> msgList = new ArrayList<>();while(rs.next()) { Msg msg = new Msg(); msg.setMsg_time(rs.getString("msg_time")); msg.setSender_nickyname(rs.getString("sender_nickyname")); msg.setSender_account(rs.getString("sender_account")); msg.setSender_sex(rs.getString("sender_sex")); msg.setSender_ip(rs.getString("sender_ip")); msg.setSender_os(rs.getString("sender_os")); msg.setSender_phone_type(rs.getString("sender_phone_type")); msg.setSender_network(rs.getString("sender_network")); msg.setSender_gps(rs.getString("sender_gps")); msg.setReceiver_nickyname(rs.getString("receiver_nickyname")); msg.setReceiver_ip(rs.getString("receiver_ip")); msg.setReceiver_account(rs.getString("receiver_account")); msg.setReceiver_os(rs.getString("receiver_os")); msg.setReceiver_phone_type(rs.getString("receiver_phone_type")); msg.setReceiver_network(rs.getString("receiver_network")); msg.setReceiver_gps(rs.getString("receiver_gps")); msg.setReceiver_sex(rs.getString("receiver_sex")); msg.setMsg_type(rs.getString("msg_type")); msg.setDistance(rs.getString("distance")); msgList.add(msg); }return msgList;
}
- 📢博客主頁:https://lansonli.blog.csdn.net
- 📢歡迎點(diǎn)贊 👍 收藏 ?留言 📝 如有錯(cuò)誤敬請指正!
- 📢本文由 Lansonli 原創(chuàng),首發(fā)于 CSDN博客🙉
- 📢大數(shù)據(jù)系列文章會每天更新,停下休息的時(shí)候不要忘了別人還在奔跑,希望大家抓緊時(shí)間學(xué)習(xí),全力奔赴更美好的生活?
總結(jié)
以上是生活随笔為你收集整理的2021年大数据HBase(十一):Apache Phoenix的视图操作的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2021年大数据HBase(十):Apa
- 下一篇: 2021年大数据HBase(十二):Ap