【Phoenix】在Kerberos认证下使用JDBC连接Phoenix 和 Phoenix各数据类型测试表创建

news2024/10/6 0:28:07

本案例使用的是CDH集群。

phoenix语法

一、Phoenix连接sqlline

# 先检查一下kerberos cache是否过期了。
klist

# 使用Phoenix的sqlline连接集群
sqlline.py zkhost1,zkhost2,zkhost3:2181

二、sqlline中创建测试表

-- 查看帮助
!help

-- 查看所有表
!tables

-- 创建schema
CREATE SCHEMA IF NOT EXISTS TEST;

-- 创建测试表
CREATE TABLE TEST.TEST_TYPE_META_BASIC(
INTEGER_TYPE INTEGER NOT NULL,
UNSIGNED_INT_TYPE UNSIGNED_INT,
BIGINT_TYPE BIGINT,
UNSIGNED_LONG_TYPE UNSIGNED_LONG,
TINYINT_TPYE TINYINT NOT NULL,
UNSIGNED_TINYINT_TPYE UNSIGNED_TINYINT,
SMALLINT_TYPE SMALLINT,
UNSIGNED_SMALLINT_TYPE UNSIGNED_SMALLINT,
FLOAT_TYPE FLOAT,
UNSIGNED_FLOAT_TYPE UNSIGNED_FLOAT,
DOUBLE_TYPE DOUBLE,
UNSIGNED_DOUBLE_TYPE UNSIGNED_DOUBLE,
DECIMAL_TYPE DECIMAL,
DECIMAL_TYPE103 DECIMAL(10,3),
BOOLEAN_TYPE BOOLEAN,
TIME_TYPE TIME,
DATE_TYPE DATE,
TIMESTAMP_TYPE TIMESTAMP,
UNSIGNED_TIME_TYPE UNSIGNED_TIME,
UNSIGNED_DATE_TYPE UNSIGNED_DATE,
UNSIGNED_TIMESTAMP_TYPE UNSIGNED_TIMESTAMP,
VARCHAR_TYPE VARCHAR,
VARCHAR_TYPE10 VARCHAR(10),
CHAR_TYPE CHAR(10),
BINARY_TYPE BINARY(30),
VARBINARY_TYPE VARBINARY,
VARBINARY_TYPE30 VARBINARY(30),
CONSTRAINT pk PRIMARY KEY (INTEGER_TYPE,TINYINT_TPYE) 
);

-- 插入一条数据
UPSERT INTO TEST.TEST_TYPE_META_BASIC VALUES(
888,
888,
888,
888,
8,
8,
999,
999,
8.888,
8.888,
9.999,
9.999,
888.888,
888.888,
TRUE,
time '2020-01-01 18:01:01.666',
date '2020-01-01 18:01:01.666',
timestamp '2020-01-01 18:01:01.666',
time '2020-01-01 18:01:01.666',
date '2020-01-01 18:01:01.666',
timestamp '2020-01-01 18:01:01.666',
'abc',
'abc',
'abc',
'cba',
'cba',
'cba'
);
-- 只能在sqlline中使用
!describe TEST.TEST_TYPE_META_BASIC;

-- 查看表
SELECT * FROM TEST.TEST_TYPE_META_BASIC;

三、java JDBC 连接

有两种方式jdbc连接Phoenix
在这里插入图片描述使用方式就是选择驱动URL模板就选择了连接方式

  • thick 方式,phoenix-client 直连hbase,速度更快,驱动url模板如下格式:
  jdbc:phoenix:zkHost:zkPort:zkHbasePath
  • thin 方式,phoenix-client 连接 Phoenix Query Server,驱动url模板如下格式:
  jdbc:phoenix:thin:url=http://localhost:8765;serialization=PROTOBUF; authentication=SPENGO;principal=Prinicpal@EXAMPLE.com;keytab=xxx.keytab

本案例选择thick方式!!!

3.1 添加集群jar包纸maven

以下两个jar都可以从集群直接获取!!!

# hbase-client
mvn install:install-file -DgroupId=com.cloudera.hbase -DartifactId=hbase-client -Dversion=2.1.0-cdh6.2.0 -Dpackaging=jar -Dfile=D:\xxx\hbase-client-2.1.0-cdh6.2.0.jar

# phoenix-client
mvn install:install-file -DgroupId=com.cloudera.phoenix -DartifactId=phoenix-client -Dversion=5.0.0-cdh6.2.0 -Dpackaging=jar -Dfile=D:\xxx\phoenix-5.0.0-cdh6.2.0-client.jar

3.2 添加pom依赖

  <properties>
    <hadoop.version>3.0.0</hadoop.version>
    <hbase.version>2.1.0-cdh6.2.0</hbase.version>
    <phoenix.version>5.0.0-cdh6.2.0</phoenix.version>
  </properties>
  
    <dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-common</artifactId>
      <version>${hadoop.version}</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-client</artifactId>
      <version>${hadoop.version}</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>com.cloudera.hbase</groupId>
      <artifactId>hbase-client</artifactId>
      <version>${hbase.version}</version>
      <scope>provided</scope>
      <exclusions>
        <exclusion>
          <artifactId>hadoop-auth</artifactId>
          <groupId>org.apache.hadoop</groupId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>com.cloudera.phoenix</groupId>
      <artifactId>phoenix-client</artifactId>
      <version>${phoenix.version}</version>
      <scope>provided</scope>
    </dependency>

3.3 添加hbase-site.xml至classpath目录

简单点,添加至resources目录下即可。
在这里插入图片描述

注意:一定要手动添加,在环境变量中设置 HBASE_HOME 或者 HBASE_CONF_DIR 是无效的!
在这里插入图片描述
CDH官方指南

3.4 代码连接

KerberosProvider文章链接

public class PhoenixTest {

    @Test
    public void testConn() throws SQLException {
        KerberosProvider.login();
        // "/hbase-secure"是从hbase-site.xml中zookeeper.znode.parent项获取的
        String jdbUrl = "jdbc:phoenix:zkhost:2181:/hbase-secure";
        Connection conn = DriverManager.getConnection(jdbUrl);
        DatabaseMetaData meta = conn.getMetaData();
        String[] type = {"TABLE"};
        String catalog=null;
        String schema="TEST";
        String table="TEST_TYPE_META_BASIC";
        ResultSet rs = meta.getTables(catalog, schema, table, type);
        if(rs.next()){
            System.out.printf("table [%s.%s] exists!%n",schema,table);
        }else{
            System.out.printf("table [%s.%s] does not exist!%n",schema,table);
        }
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1069445.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

IS-IS

二、IS-IS中的DIS与OSPF中的DR Level-1和Level-2的DIS是分别选举的&#xff0c;用户可以为不同级别的DIS选举设置不同的优先级。DIS的选举规则如下&#xff1a;DIS优先级数值最大的被选为DIS。如果优先级数值最大的路由器有多台&#xff0c;则其中MAC地址最大的路由器会成为DI…

算法竞赛备赛进阶之数字三角形模型训练

目录 1.数字三角形 2.摘花生.1015 3.最低通行费 4.方格取数 在算法竞赛中&#xff0c;有时候会遇到一些图形相关的题目&#xff0c;需要运用图论相关的知识进行求解。今天我们将一起探讨一个比较常见的模型——数字三角形模型。 在数字三角形模型中&#xff0c;每个位置的…

Redis 群集模式

目录 1 Redis 群集模式 1.1 集群的作用&#xff0c;可以归纳为两点 1.2 Redis集群的数据分片 2 搭建Redis 群集模式 2.1 开启群集功能 2.2 启动redis节点 2.3 启动集群 2.4 测试群集 1 Redis 群集模式 集群&#xff0c;即Redis Cluster&#xff0c;是Redis 3.0开始引入…

Android攻城狮学鸿蒙 -- 点击事件

具体参考&#xff1a;华为官网学习地址 1、点击事件&#xff0c;界面跳转 对于一个按钮设置点击事件&#xff0c;跳转页面。但是onclick中&#xff0c;如果pages前边加上“/”&#xff0c;就没法跳转。但是开发工具加上“/”才会给出提示。不知道是不是开发工具的bug。&#…

用正则表达式验证用户名和跨域postmessage

正则验证用户名 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title> </hea…

redis命令学习

redis命令学习 redis的类型分为&#xff1a; string类型hash类型list类型set类型sortedset类型 string类型命令 set key value 设置值&#xff0c;key是键 value是值get key 根据键获取值setex key second value 设置值有效时间 second 是时间setnx key value 只有key不存在…

JSP旅游平台管理

本系统采用基于JAVA语言实现、架构模式选择B/S架构&#xff0c;Tomcat7.0及以上作为运行服务器支持&#xff0c;基于JAVA、JSP等主要技术和框架设计&#xff0c;idea作为开发环境&#xff0c;数据库采用MYSQL5.7以上。 开发环境&#xff1a; JDK版本&#xff1a;JDK1.8 服务器&…

【19】c++设计模式——>桥接模式

桥接模式的定义 C的桥接模式&#xff08;Bridge Pattern&#xff09;是一种结构型设计模式&#xff0c;它将抽象部分与实现部分分离&#xff0c;使得它们可以独立地变化。桥接模式的核心思想是利用组合关系代替继承关系&#xff0c;将系统划分成多个独立的、功能不同的类层次结…

Spring实例化源码解析之Custom Events下集(九)

上集从官网的角度讲解了基本的使用和源码的内容&#xff0c;没有深入的进行分析&#xff0c;本章将从源码的角度分析ApplicationEvent、ApplicationListener、ApplicationEventMulticaster这三者之间的关系。 initApplicationEventMulticaster 上一章后续部分给出了源码的含义…

数据驱动智能护理:看AI如何塑造医疗领域,为灰暗夕阳带来新的曙光

近年来&#xff0c;人工智能的应用正日益渗透到医疗领域&#xff0c;呈现出无限的潜力和前景。技术的不断进步和全球医疗挑战的不断涌现&#xff0c;使得AI成为改善医疗保健质量、提高患者生活水平的强大工具。从疾病的早期诊断到治疗计划的制定&#xff0c;再到医疗管理和患者…

IP 子网划分(VLSM)

目录 一、 为什么要划分子网 二、如何划分子网 1、划分两个子网 2、划分多个子网 一、 为什么要划分子网 假设有一个B类IP地址172.16.0.0&#xff0c;B类IP的默认子网掩码是 255.255.0.0&#xff0c;那么该网段内IP的变化范围为 172.16.0.0 ~ 172.16.255.255&#xff0c;即…

IDEA的database工具以及对比两个数据库之间的差异(比DBVisualizer和DBeaver方便)

背景 其实IDEA里有个非常好用的database工具&#xff0c;用来连数据库&#xff0c;能连的数据非常多&#xff0c;最重要的是还带有对比数据库差异的工具。 唯一有点不好就是这个是 intellij idea的ultimate edition版本才有&#xff0c;对于社区版本&#xff08;community ed…

Tomcat自启动另一种方法

Tomcat自启动另一种方法 问题&#xff1a; 不知道怎么回事&#xff0c;好几台电脑都可以开机自启动tomcat&#xff0c;正常运行项目。一样的配置一样的操作流程&#xff0c;偏偏要运行的机器开机自启动后&#xff0c;项目不能运行&#xff0c;手动重启tomcat又可以用了。网上…

【案例分享】企业常用IPSec VPN实现

【微|信|公|众|号&#xff1a;厦门微思网络】 【微思网络www.xmws.cn&#xff0c;成立于2002年&#xff0c;专业培训21年&#xff0c;思科、华为、红帽、ORACLE、VMware等厂商认证及考试&#xff0c;以及其他认证PMP、CISP、ITIL等】 组网需求 如图1所示&#xff0c;RouterA为…

图像处理与计算机视觉--第五章-图像分割-自适应阈值分割

文章目录 1.自适应阈值分割介绍2.自适应阈值函数参数解析3.高斯概率函数介绍4.自适应阈值分割核心代码5.自适应阈值分割效果展示6.参考文章及致谢 1.自适应阈值分割介绍 在图片处理过程中&#xff0c;针对铺前进行二值化等操作的时候&#xff0c;我们希望能够将图片相应区域内所…

数字IC前端学习笔记:数字乘法器的优化设计(Wallace Tree乘法器)

相关阅读 数字IC前端https://blog.csdn.net/weixin_45791458/category_12173698.html?spm1001.2014.3001.5482 进位保留乘法器依旧保留着阵列的排列规则&#xff0c;只是进位是沿斜下角&#xff0c;如果能使用树形结构来规划这些进位保留加法器&#xff0c;就能获得更短的关键…

ToBeWritten之让响应团队参与并做好沟通

也许每个人出生的时候都以为这世界都是为他一个人而存在的&#xff0c;当他发现自己错的时候&#xff0c;他便开始长大 少走了弯路&#xff0c;也就错过了风景&#xff0c;无论如何&#xff0c;感谢经历 转移发布平台通知&#xff1a;将不再在CSDN博客发布新文章&#xff0c;敬…

网页动画科普LLM原理;淘宝推出AI试衣间;爆火的AI极简人像;100天创业日程表;Llama 2详解 | ShowMeAI日报

&#x1f440;日报&周刊合集 | &#x1f3a1;生产力工具与行业应用大全 | &#x1f9e1; 点赞关注评论拜托啦&#xff01; &#x1f525; Meta Connect 2023&#xff0c;发布基于 LLama 2 的AI聊天助手和虚拟角色 9月27日-28日&#xff0c;Meta 举办了年度重要会议 Meta Co…

vue3 + vite项目使用SVG图标

我们在开发一个项目时常会用到一些图标&#xff0c;有些图标在有限的图标库中却是没有&#xff0c;因此少数的图标需要我们去网上查找&#xff0c;或是自定义一些专用的图标。一般很少有图标库满足现实的项目开发&#xff0c;这时将推荐使用 iconify 这个图标库&#xff0c;几乎…

Zabbix 监控系统安装和部署

Zabbix 监控系统安装和部署 一、zabbix 是什么&#xff1f;1.1、zabbix 监控原理&#xff08;重点&#xff09;1.2、Zabbix 6.0 新特性1.3、Zabbix 6.0 功能组件1.4、数据库1.5、Web 界面1.6、Zabbix Agent1.7、Zabbix Proxy1.8、Java Gateway 二、部署Zabbix 6.02.1、 解决 za…