簡介
Phoenix本意是鳳凰的意思,Apache Phoenix是構建在HBase之上的關系型數據庫層,作為內嵌的客戶端JDBC驅動用以對HBase中的數據進行低延遲訪問。Apache Phoenix會將用戶編寫的sql查詢編譯為一系列的scan操作,最終產生通用的JDBC結果集返回給客戶端。數據表的元數據存儲在HBase的表中被會標記版本號,所以進行查詢的時候會自動選擇正確的schema。直接使用HBase的API,結合協處理器(coprocessor)和自定義的過濾器的話,小范圍的查詢在毫秒級響應,千萬數據的話響應速度為秒級。
特性
Phoenix可以用SQL語句來查詢Hbase,且只能查Hbase,別的類型比如查詢文本文件等都不支持!如果要查文本文件等,可以使用Hive和Impala,Phoenix在Hbase上查詢的性能較Hive和Impala具有優勢。
常用操作
數據源表、登錄。1./sqlline.py localhost
查看HBase所有表。1!tables
table schema為system的是系統表。
查看HBase中表名為test的所有列。1!columns test
表名不用加引號。
查詢表數據。1
2
3select * from test;
select name from test;//查詢指定列
select * from test where name = 'jiangxiaoqiang';//條件查詢
刪除表數據。1
2delete from test where condition;//語法
delete from test where name is null;//例子
condition是過濾條件,注意結尾需要有分號,表示SQL語句已經結束,可以提交給引擎執行。
清除表的重復數據。1delete from tablename where vtime in ( select vtime from tablename group by vtime having count(*)>1) and id not in (select max(id) from tablename group by vtime having count(*)>1 );
清除同一時間重復的數據(同一時刻只能有1條數據)。
連接查詢。1SELECT P.id as id, vtime, A.description FROM 表P P left join 表A A on P.id=A.positional_Id WHERE P.vehicle_id='cae21196-cb66-4256-88a6-7cdfb23e2c78' and P.vtime >= '2016-10-10 00:00:00' and P.vtime <= '2016-10-13 23:59:59' and P.alarm is not null and P.alarm != '0' order by P.vtime;
注意在做MyBatis映射時,P.id列需要一個別名,對應定義的實體字段。
函數(Function)
substr函數用于截取字符串。1select substr(time,0,11) from test group by substr(time,0,11);
time為需要截取的字符串,從第0位開始截取11位長度。
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态