Phoenix安装与JDBC连接Phoenix

简介

    原生的HBaseAPI使用起来真的比较麻烦,当然公司有架构师做一层封装,提供给开发人员使用应该还不错。如果么有架构师怎么办?Apache出的Phoenix就是干了架构师的工作,提供了jdbc接口对HBase表进行操作。

Phoenix安装

1.下载

打开网址http://mirror.bit.edu.cn/apache/phoenix/,可以看到如下类似的页面。phoenix对hbase版本有严格的要求,因此在使用的时候要格外小心,如果公司的hbase升级后,使用phoenix编写的代码也需要更新jar,甚至修改代码(这个有点蛋疼,不知道会不会因为这一点导致其很难广泛被使用)

174010_2eJU_3049601.png

我自己的hbase是0.98,所以我下的第一个

2.上传解压

tar -xf apache-phoenix-4.13.1-HBase-0.98.tar.gz

3.复制如下两个jar包到hbase\lib目录下

hbase集群中的所有机器都要执行

cp apache-phoenix-4.13.1-HBase-0.98/phoenix-4.13.1-HBase-0.98-server.jar hbase-0.98.17-hadoop2/lib/phoenix-4.13.1-HBase-0.98-server.jar

cp apache-phoenix-4.13.1-HBase-0.98/phoenix-4.13.1-HBase-0.98-client.jar hbase-0.98.17-hadoop2/lib/phoenix-4.13.1-HBase-0.98-client.jar

4.配置环境变量

####################### hbase ##########################
export HBASE_HOME=/home/hadoop/proc/hbase-0.98.17-hadoop2
PATH=$PATH:$HBASE_HOME/bin
export PATH

5.启动测试

启hadoop\zk\hbase

启动phoenix

在phoenix\bin目录下执行

sqlline.py hadoop01,hadoop02,hadoop03:2181

--hadoop01,hadoop02,hadoop03:2181是zk集群地址串

命令行操作

**创建表**

create table ph_test(id integer primary key,name varchar);

**查询表**

select * from ph_test;

174039_qHS8_3049601.png

创建的表字段虽然给的小写,但表的元信息其实默认是大写的,如果要想字段名是小写,可以在创建表的时候用双引号将列包含起来。

phoenix中创建的表实际上就是在hbase上创建了一张表,类似于hive中创建表在hdfs上创建了一个文件夹一样

phoenix表中的主键会成为hbase表的行键

如果不声明phoenix表中的普通列会成为hbase表中默认列族(名字叫0)中的普通列,也可以使用语法指定列族的名字(一般没什么必要,几乎设计的表都是一个列族)

注:如果hbase中有一张存在的表,而phoenix中没有,则只需要创建一个表名一样,列数一样的表即可。

**插入数据**

upsert into ph_test(id) values(123);

upsert into ph_test(id,name) values(123,'Messi');

174047_bBhr_3049601.png

upsert表示插入和更新是同一个命令,因为id是行键,不允许不指定id的值

**删除数据**

delete from ph_test where id=124;

174054_TpUI_3049601.png

删除表

drop table ph_test;

174101_MiAU_3049601.png

API操作

1.新建一个maven工程

2.在pom文件中加入

  <dependencies>
	<dependency>
	    <groupId>org.apache.phoenix</groupId>
	    <artifactId>phoenix-core</artifactId>
	    <version>4.13.0-HBase-0.98</version>
	</dependency>
    <dependency>  
        <groupId>jdk.tools</groupId>  
        <artifactId>jdk.tools</artifactId>  
        <version>1.8</version>  
        <scope>system</scope>  
        <systemPath>C:\Users\jionsvolk\.m2\repository\jdk\tools\jdk.tools\1.8\jdk.tools-1.8.jar</systemPath>  
    </dependency>  
  </dependencies>

jdk.tools自动下载总是不成功,就我自己本机的jdk目录中把tools.jar复制到Maven本地仓库对应的目录下,文件名修改为jdk.tools-1.8.jar

3.写代码

package com.jv.phoenixm;

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

public class TestPhoenix {
	public static void main(String[] args) throws Exception {
		Connection conn = DriverManager.getConnection("jdbc:phoenix:hadoop01,hadoop02,hadoop03:2181");
		Statement stat = conn.createStatement();
		ResultSet rs = stat.executeQuery("select * from ph_test");
		while(rs.next()){
			String v1 = rs.getString("ID");
			System.out.println(v1);
			String v2 = rs.getString("NAME");
			System.out.println(v2);
		}
		stat.close();
		conn.close();
	}
}

 

执行输出结果

 

174114_0DPw_3049601.png

更多的增删改操作和jdbc一样,随便看看以前的jdbc的insert update delete就可以咯

转载于:https://my.oschina.net/u/3049601/blog/1821352

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在使用JDBC连接Phoenix时,可以通过连接URL或者通过Java代码设置一些配置参数。以下是一些常见的配置参数: 1. phoenix.query.timeoutMs:设置查询超时时间,单位为毫秒。 2. phoenix.query.keepAliveMs:设置查询保持活动状态的时间,单位为毫秒。 3. phoenix.query.maxGlobalMemoryPercentage:设置查询最大可使用的全局内存百分比。 4. phoenix.query.maxGlobalMemoryWaitMs:设置查询等待全局内存的最大时间,单位为毫秒。 5. phoenix.query.threadPoolSize:设置查询线程池的大小,用于并发执行查询操作。 6. phoenix.jdbc.autoCommit:设置是否自动提交事务,默认为true。 7. phoenix.jdbc.fetchSize:设置每次从服务器获取的行数,默认为0,表示使用默认大小。 8. phoenix.connection.autoCommit:设置是否自动提交事务,默认为true。 9. phoenix.mutate.batchSize:设置批量操作的大小,默认为1000。 10. phoenix.mutate.maxSize:设置批量操作的最大大小,默认为0,表示不限制大小。 可以通过在连接URL中添加参数来配置,例如: ``` jdbc:phoenix:localhost:2181:/hbase;phoenix.query.timeoutMs=5000;phoenix.connection.autoCommit=false ``` 或者通过Java代码设置参数,例如: ```java Properties props = new Properties(); props.setProperty("phoenix.query.timeoutMs", "5000"); props.setProperty("phoenix.connection.autoCommit", "false"); Connection conn = DriverManager.getConnection("jdbc:phoenix:localhost:2181:/hbase", props); ``` 这些配置参数可以根据具体需求进行调整和优化,可以参考Phoenix官方文档或者相关资源了解更多可配置参数的详细信息。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值