--- HBase学习笔记 (伍)- Phoenix & Sqoop **

Phoenix简介

  • 构建在Apache HBase之上的一个SQL中间层
  • 可以在Apache HBase上执行SQL查询,性能强劲
  • 较完善的查询支持,支持二级索引,查询效率较高

Phoenix优势

  • Put the SQL back in NoSQL, 程序员熟知SQL语句
  • 具有完整ACID事务功能的标准SQL和JDBC API的强大功能
  • 完全可以和其他Hadoop产品例如Spark, Hive, Pig, Flume以及MapReduce集

Phoenix vs Hive
在这里插入图片描述

为什么phoenix快

  • 通过HBase协处理器,在服务端进行操作,从而最大限度的减少客户端和服务器的数据传输
  • 通过定制的过滤器对数据进行处理
  • 使用本地的HBase Api而不是通过MapReduce框架,这样能最大限度的降低启动成本

Phoenix功能特性

  • 二级索引:抛弃之前的只能根据rowkey做索引,通过过滤器删选数据;自由根据索引的列或者表达式形成备用的行键更方便的进行数据的查找
  • 多租户:通过多租户表和租户专用的链接使用户只能访问自己的数据
  • 用户定义函数:自己实现DF;像select一样使用
  • 行时间戳列:可以将hbase每行的时间戳映射成Phoenix的一个列
  • 分页查询:标准的sql分页语法
  • 视图:标准sql语法(Phoenix可以使用多个虚拟表共享底层的物理表)

Phoenix安装

  • 下载对应版本的安装包
    http://phoenix.apache.org/download.html
  • 配置与现有HBase集群集成重新
    解压后如下操作
    如果是分布式则应拷贝到每个reginserver下
cp phoenix-core-4.14.1-HBase-1.2.jar ../hbase-1.2.0-cdh5.14.4/lib/
cp phoenix-4.14.1-HBase-1.2-server.jar ../hbase-1.2.0-cdh5.14.4/lib/
  • 启动HBase环境,并测试环境是否可以正常使用
    前置条件启动HDFS
    启动hbase
    最后启动phoenix(bin/./sqlline.py)

Phoenix实战:shell命令操作Phoenix

进入shell
在这里插入图片描述
创建表
在这里插入图片描述
在这里插入图片描述
插入数据phoenix插入是upsert与普通sql不同
在这里插入图片描述
插入列
在这里插入图片描述
插入数据
在这里插入图片描述
复杂sql语句
在这里插入图片描述

Phoenix实战:java jdbc操作Phoenix

引入依赖

  <dependencies>
    <dependency>
      <groupId>org.apache.phoenix</groupId>
      <artifactId>phoenix-core</artifactId>
      <version>4.13.1-HBase-1.2</version>
    </dependency>
  </dependencies>
package com.kun.bigdata.phoenix.test;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class PhoenixTest {
   

  public static void main(String[] args) throws Exception {
   
    Class.forName("org.apache.phoenix.jdbc.PhoenixDriver");
    Connection connection = DriverManager.getConnection("jdbc:phoenix:localhost:2181");

    PreparedStatement statement = connection.prepareStatement("select * from PERSON");

    ResultSet resultSet = statement.executeQuery();

    while (resultSet.next()) {
   
      System.out.println(resultSet.getString("NAME"));
    }

    statement.close();
    connection.close();
  }
}

通过mybatis操作Phoenix

引入依赖

<dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter</artifactId>
      <exclusions>
        <exclusion>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-logging</artifactId>
        </exclusion>
      </exclusions>
      <version>1.4.2.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
      <exclusions>
        <exclusion>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-tomcat</artifactId>
        </exclusion>
      </exclusions>
      <version>1.4.2.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-jetty</artifactId
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值