Phoenix 关联hbase表历史数据
生活随笔
收集整理的這篇文章主要介紹了
Phoenix 关联hbase表历史数据
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Phoenix 基本使用
進入Phoenix
phoenix-sqlline.py 10.248.161.18:2181:/hbase?或者進入目錄下執行
cd /opt/cloudera/parcels/APACHE_PHOENIX/bin關聯Hbase原有表
- 創建Hbase表,列簇為 cf1 , cf2
- 插入測試數據
- 查看
- ?創建Phoenix表關聯
在Phoenix執行
create table "phoenix_hbase_test"("rowkey" varchar primary key, "cf1"."name" varchar , "cf2"."age" varchar) column_encoded_bytes=0;或者創建視圖(可以理解為視圖是hive的外部表,table是內部表,刪除內部表hbase表也會刪除,刪除視圖hbase表還存在)
create view "phoenix_hbase_test"("rowkey" varchar primary key, "cf1"."name" varchar , "cf2"."age" varchar) ;?
注意:
? ? ? ? 這里這里在Phoenix后面有column_encoded_bytes=0;? 意思是禁用對字段值進行壓縮編碼(4.10)后的新特性,如果不加會查詢會無數據,具體可參考:
- 查詢數據?
- Phoenix插入數據?并查看內容
如果是視圖的場景下,是無法upsert into ,只能通過hbase put添加數據?
0: jdbc:phoenix:xxx:2181:/hbase> upsert into "phoenix_hbase_test"("rowkey","cf1"."name","cf2"."age") values('key5','shazi','66'); Error: ERROR 505 (42000): Table is read only. (state=42000,code=505) org.apache.phoenix.schema.ReadOnlyTableException: ERROR 505 (42000): Table is read only.at org.apache.phoenix.compile.UpsertCompiler.compile(UpsertCompiler.java:359)at org.apache.phoenix.jdbc.PhoenixStatement$ExecutableUpsertStatement.compilePlan(PhoenixStatement.java:784)at org.apache.phoenix.jdbc.PhoenixStatement$ExecutableUpsertStatement.compilePlan(PhoenixStatement.java:770)at org.apache.phoenix.jdbc.PhoenixStatement$2.call(PhoenixStatement.java:401)at org.apache.phoenix.jdbc.PhoenixStatement$2.call(PhoenixStatement.java:391)at org.apache.phoenix.call.CallRunner.run(CallRunner.java:53)at org.apache.phoenix.jdbc.PhoenixStatement.executeMutation(PhoenixStatement.java:389)at org.apache.phoenix.jdbc.PhoenixStatement.executeMutation(PhoenixStatement.java:378)at org.apache.phoenix.jdbc.PhoenixStatement.execute(PhoenixStatement.java:1825)at sqlline.Commands.execute(Commands.java:822)at sqlline.Commands.sql(Commands.java:732)at sqlline.SqlLine.dispatch(SqlLine.java:813)at sqlline.SqlLine.begin(SqlLine.java:686)at sqlline.SqlLine.start(SqlLine.java:398)at sqlline.SqlLine.main(SqlLine.java:291)視圖有以下幾點限制
1.只有通過VIEW進行更新時,才能維護VIEW上的INDEX。通過底層TABLE或父VIEW進行的更新不會反映在索引(PHOENIX-1499)中。 2.如果主鍵列的主鍵約束以可變長度列(PHOENIX-2157)結尾,則主鍵列不能添加到VIEW中。 3.VIEW可以通過簡單的SELECT *查詢僅在單個表上定義。您不能在多個連接的表格或聚合(PHOENIX-1505,PHOENIX-1506)上創建VIEW 。 4.當一個列添加到VIEW時,新列不會自動添加到任何子視圖(PHOENIX-2054)。解決方法是手動將該列添加到子視圖。 5.所有列在創建時都必須投影到VIEW中(即僅支持CREATE VIEW ... AS SELECT *)。但是,請注意,在通過ALTER VIEW命令創建后,您可以在VIEW中刪除從基表繼承的非主鍵列。在未來的版本(PHOENIX-1507)中支持在SELECT子句中提供列和或表達式的子集。?
?
?
總結
以上是生活随笔為你收集整理的Phoenix 关联hbase表历史数据的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: TCP滑动窗口机制
- 下一篇: Docker 使用Dockerfile构