2021年大数据HBase(十一):Apache Phoenix的视图操作
全網最詳細的大數據HBase文章系列,強烈建議收藏加關注!
新文章都已經列出歷史文章目錄,幫助大家回顧前面的知識重點。
目錄
系列歷史文章
前言
Apache Phoenix的視圖操作
一、應用場景
二、視圖介紹
三、語法說明
四、建立MOMO_CHAT:MSG的視圖
1、參考SQL語句
2、嘗試查詢一條數據
五、完成陌陌查詢案例
1、需求
2、編寫SQL實現陌陌案例
3、使用java連接Phoenix:?
系列歷史文章
2021年大數據HBase(十七):HBase的360度全面調優
2021年大數據HBase(十六):HBase的協處理器(Coprocessor)
2021年大數據HBase(十五):HBase的Bulk Load批量加載操作
2021年大數據HBase(十四):HBase的原理及其相關的工作機制
2021年大數據HBase(十三):HBase讀取和存儲數據的流程
2021年大數據HBase(十二):Apache Phoenix 二級索引
2021年大數據HBase(十一):Apache Phoenix的視圖操作
2021年大數據HBase(十):Apache Phoenix的基本入門操作
2021年大數據HBase(九):Apache Phoenix的安裝
2021年大數據HBase(八):Apache Phoenix的基本介紹
2021年大數據HBase(七):Hbase的架構!【建議收藏】
2021年大數據HBase(六):HBase的高可用!【建議收藏】
2021年大數據HBase(五):HBase的相關操作-JavaAPI方式!【建議收藏】
2021年大數據HBase(四):HBase的相關操作-客戶端命令式!【建議收藏】
2021年大數據HBase(三):HBase數據模型
2021年大數據HBase(二):HBase集群安裝操作
2021年大數據HBase(一):HBase基本簡介
前言
?2021大數據領域優質創作博客,帶你從入門到精通,該博客每天更新,逐漸完善大數據各個知識體系的文章,幫助大家更高效學習。
Apache Phoenix的視圖操作
一、應用場景
因為我們之前已經創建了 MOMO_CHAT:MSG 表,而且數據添加的方式都是以PUT方式原生API來添加的。故此時,我們不再需要再使用Phoenix創建新的表,而是使用Phoenix中的視圖,通過視圖來建立與HBase表之間的映射,從而實現數據快速查詢。
二、視圖介紹
我們可以在現有的HBase或Phoenix表上創建一個視圖。表、列蔟和列名必須與現有元數據完全匹配,否則會出現異常。當創建視圖后,就可以使用SQL查詢視圖,和操作Table一樣。
三、語法說明
create view "my_hbase_table" (rowkey varchar primary key,列族.列名1 數據類型,列族.列名2 數據類型,....
)
考慮以下幾個問題:
- 視圖如何映射到HBase的表? 視圖的名字必須是:命名空間.表名
- 視圖中的列如何映射到HBase的列蔟和列? ?列名必須是:列蔟.列名
- 視圖中的類如何映射到HBase的ROWKEY? 指定某個列為primary key,自動映射ROWKEY
四、建立MOMO_CHAT:MSG的視圖
1、參考SQL語句
-- 創建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、嘗試查詢一條數據
SELECT * FROM "MOMO_CHAT"."MSG" LIMIT 1;
五、完成陌陌查詢案例
1、需求
根據日期、發送人賬號、接收人賬號查詢歷史消息
2、編寫SQL實現陌陌案例
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
- 📢歡迎點贊 👍 收藏 ?留言 📝 如有錯誤敬請指正!
- 📢本文由 Lansonli 原創,首發于 CSDN博客🙉
- 📢大數據系列文章會每天更新,停下休息的時候不要忘了別人還在奔跑,希望大家抓緊時間學習,全力奔赴更美好的生活?
總結
以上是生活随笔為你收集整理的2021年大数据HBase(十一):Apache Phoenix的视图操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2021年大数据HBase(十):Apa
- 下一篇: 2021年大数据HBase(十二):Ap