一、軟件下載
1、訪問:http://phoenix.apache.org/
2、點擊:
3、進入以下內容:點擊
4、跳轉到
5、跳轉到
6、點擊安裝包,進入
點擊進行下載:
二、安裝
phonenix主要是與hbase進行集成,也可以稱之為hbase sql的框架。
進入到phonenix的解壓文件夾中,將phoenix-core-4.13.1-HBase-1.2server.jar
復制到hbase中的lib目錄下。重啟hbase
三、使用客戶端
下載http://squirrel-sql.sourceforge.net/
點擊出現以下界面:
下載之后在
進入到當前目錄。運行java –jar squirrel-sql-3.8.0-standard.jar
進入下一步:
進入到安裝目錄:
四、客戶端集成Hbase
1、 將phoenix的client包復制到工具的lib目錄
2、讓工具可以加載我們的phoneix的連接,加入驅動
操作:
點擊創建與hbase的連接:
創建一張表:
五、可能會遇到的問題
1、 無法看到之前已經創建的表
創建一張與hbase同名的表,或者直接創建一張視圖表
2、 phoenix創建的表,手動put之后,查詢不到數據
因為phoenix與java創建表之后,phoenix創建的表名不全大寫,就算sql中寫的小寫也是一樣會轉成大寫
3、 如果解決創建表時表名為大寫
如果之前已經有一個小寫的表名,如何解決關聯問題?
注意:表名一定要加雙引號,不然會將語句自動轉為全大寫的。
4、 單引號與雙引號的區分
4.1:當值上面加上雙引號會查詢不到你想要的結果
目前創建的表可以在hbase中查看
1、當我們通過工具創建一張表之后,無法知道該表的列族。但是要使用put的時候,又需要指定列族名?
可以通過界面或者是desc命令的方式查看,默認創建的列族名為"0"
2、當在hbase shell中put了相應的數據之后,但是在工具里面沒有看到相應的數據?
可以發現hbase中的列名字是要區分大小寫。?????
3、當hbase中已經有表,但是在工具里面是看不到該表的?
解決辦法,創建一張同名的表
當然后工具創建表的時候,會將表名全部改為大寫。
如果hbase中的表所有的字母全是大寫的話,工具在創建的時候會自動關聯。
如果hbase中是有非字母全大寫的話,可以在工具中創建時為表名寫上【雙引號】
4、數據關聯
如果是先在hbaes中創建的表,在到工具中去創建的時候,需要為字段加上列族名
create table "java_table3"(
"pkid" varchar(512) primary key,
"cf01"."name" varchar(512)
)
如果是通過工具直接創建的話,也需要加上列族名,不然會用0來作為列族,但是數據關聯不上。
只能操作結構化的數據,在結構化之外的字段是查詢不了的
六、java操作
<dependency> <groupId>org.apache.phoenix</groupId> <artifactId>phoenix-core</artifactId> <version>4.13.1-HBase-1.2</version> </dependency>
Class.forName("org.apache.phoenix.jdbc.PhoenixDriver"); String url = "jdbc:phoenix:master,slave01,slave02"; Connection conn = DriverManager.getConnection(url); PreparedStatement preparedStatement = conn.prepareStatement("select * from \"java_table2\""); ResultSet resultSet = preparedStatement.executeQuery(); while(resultSet.next()){ System.out.println(resultSet.getString(1)); } resultSet.close(); preparedStatement.close(); conn.close();