phoenix操作注意点

一.与hbase 的映射

1.空表格映射

在phoenix中创建表格,会自动映射到hbase中,我们可以通过hbase shell 来查看。举个例子,我们创建了一个表,

create table hbase_col_test(
        pk varchar not null primary key,        
        //primary key 映射到hbase 中的rowkey
        "cf1"."col1" varchar ,                  
        //对应hbase的列族cf1,列名为col1
        "cf1"."col2" varchar ,                  
        //对应cf1:col2
        "cf2"."col3" varchar                    
        //对应cf2:col3
     );

创建的时候注意格式的书写。

2.对于已经存在的hbase表做映射

通过创建视图来查询hbase表,我们举个例子,对于一个列族的查询:

create view "test" (
    k varchar not null primary key, //主键对应hbase 中的rowkey
    "val" varchar)default_column_family='cf1';//列名与hbase 中对应即可

对于多个列族的查询,可以这样写:

create view "hbase_to_phoe"(
    pk varchar not null primary key,     -----主键对应
    "addr"."province" varchar,       -----addr列族,province列(hbase中定义的列)
    "school"."name" varchar);        -----school列族,name列(hbase中定义列)

二 .导入数据的方式

这里我只介绍中小数据级导入,我们先进入{Phoenix_dir}/bin路径下,然后通过./psql.py 导入数据:

./psql.py -t HBASE_COL_TEST -d $'\t' $zk_addr:2181 ../data/hbase_col_data.csv   (HBASE_COL_TEST是表名,'\t'是数据分割符,导入数据时表明必须是大写,不然可能无法导入) 

三 . java API 操作hbase

准备工作:

  1. 从集群中拷贝以下文件:core-site.xml,hbase-site.xml,hdfs-site.xml放在工程src下。
  2. 把phoenix的phoenix-{version}-client.jar 和phoenix-core-{version}.jar添加到classpath中
  3. 配置寄存中各个节点的hosts文件,把客户端的hostname:IP添加进去(不添加好像也没有影响)
  4. 在客户端host文件中加入集群的hostname 和IP
    工程截图如下所示:
    这里写图片描述
    具体Phoenix_Test.java代码如下:
package com.lanyizheng.phoenix;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class Phoenix_Test {
    public static void main(String[] args) throws SQLException {
        //我这里是访问远程服务器上的hbase服务,所以在程序中设置hbase.tmp.dir 的路径
        System.setProperty("hbase.tmp.dir", "/tmp");
        try{
        //驱动加载          Class.forName("org.apache.phoenix.jdbc.PhoenixDriver");
        }catch(Exception e){
            e.printStackTrace();
        }
        //配置zookeepr地址,后面的就是常见的jdbc操作
        String url="jdbc:phoenix:bj-g2hdp1,bj-g2hdp2,bj-g2hdp3:2181";
        Connection conn=DriverManager.getConnection(url);
        Statement statement=conn.createStatement();
        String sql="select count(1) as num from web_stat";
        long time=System.currentTimeMillis();
        ResultSet rs=statement.executeQuery(sql);
        while(rs.next()){
            int count=rs.getInt("num");
            System.out.println("row count is"+count);
        }
        long timeUsed=System.currentTimeMillis()-time;
        System.out.println("time"+timeUsed+"mm");
        rs.close();
        statement.close();
        conn.close();
    }
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值