Phoneix(二)HBase集成Phoenix安裝


 

一、軟件下載

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();

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM