Phoenix是构建在HBase之上的关系型数据库层,作为内嵌的客户端JDBC驱动用以对HBase中的数据进行低延迟访问

Phoenix会将用户编写的sql查询编译为一系列的scan操作,最终产生通用的JDBC结果集返回给客户端

Phoenix可以看成是mysql

准备安装包

apache-phoenix-4.12.0-HBase-1.2-bin.tar.gz

解压Phoenix

tar -zxvf apache-phoenix-4.12.0-HBase-1.2-bin.tar.gz

改下名字

mv apache-phoenix-4.12.0-HBase-1.2-bin phoenix-4.12.0

看下目录结构

将jar拷贝到hbase的lib目录下

phoenix-4.12.0-HBase-1.2-client.jar

phoenix-core-4.12.0-HBase-1.2.jar

cp phoenix-4.12.0-HBase-1.2-client.jar /opt/bigdata/hbase-1.2.1/lib/

cp phoenix-core-4.12.0-HBase-1.2.jar /opt/bigdata/hbase-1.2.1/lib/

重启hbase服务,让配置生效

找到hbase-site.xml文件,将hbase/conf下的hbase-site.xml文件拷贝到Phoenix/bin目录下覆盖掉,或者直接修改

    
                hbase.tmp.dir
                /opt/bigdata/hbase-1.2.1/data
        
        
                hbase.rootdir
                hdfs://masterhbase:8082/hbase
        
         
                hbase.cluster.distributed
                true
         
         
                hbase.zookeeper.quorum
                masterhbase,masterslave1,masterslave2
        
         
                zookeeper.znode.parent
                /hbase
        
        
                hbase.regionserver.wal.codec
                org.apache.hadoop.hbase.regionserver.wal.IndexedWALEditCodec
         

安装工具

yum -y install python-argparse

启动Phoenix:指定ZK的地址以及端口号,作为hbase的访问入口

bin/sqlline.py masterhbase:2181

在HBase中输入list,会发现多一些表

语句大多数类似mysql语句,但是没有show database table list都不行 用help帮助信息

!tables 当前phoenix的系统表,hbase中也会有这些表,表示关联成功一半

创建表

CREATE TABLE user (

id varchar PRIMARY KEY,

name varchar ,

passwd varchar

);

在HBase Shell中可以看到

hbase区分大小写

Phoenix不区分大小写,默认情况下都是大写,变小写加上双引号就可以

在hbase的shell中:describe 'USER' 查看

得知默认列族为0,id主键字段对应到hbase的ROW字段

phoenix插入数据: updata+insert结合(upsert)更新数据与这个语句是一样的

upsert into user(id, name, passwd) values('001', 'admin', 'admin');

在HBase Shell中查看

scan 'USER'

phoenix删除表

drop table user;

phoenix指定列族

CREATE TABLE user (

id varchar PRIMARY KEY,

INFO.name varchar ,

INFO.passwd varchar

);

在hbase shell中查看

phoenix查询语句:

select * from user;

select name from user where id ='001';

phoenix删除语句:

delete from user where id='001';

在phoenix的CLI界面中进行简单的CRUD操作,基本上与RDBMS的操作没有太大区别。

hbase与phoenix表与表进行关联

在phoenix中:列的顺序可以不一致,表名称必须一致,以及列名称一致

在HBase中有一张表

我们在phoenix做映射创建

create table "stu_info_importtsv"(

"ROW" varchar primary key,

"f1"."location" varchar,

"f2"."age" varchar,

"f1"."name" varchar,

"f3"."addr" varchar

);

查看下数据

回到hbase中会发现一些变化,不会影响,可忽略

phoenix数据类型:

char

varchar

decimal

tinyint

smallint

integer

bigint

float

double

timestamp

date

time

binary

varbinary

phoenix导入csv文件数据(批量):

注意:要加载的所有CSV文件都必须具有".csv"文件扩展名

另外phoenix也支持mr做一个批量数据导入

Phoenix创建表

create table if not exists bulkdata (

state char(2) not null,

city varchar not null,

population bigint

constraint my_pk primary key (state, city)

);

准备数据

NY,New York,8143197

CA,Los Angeles,3844829

IL,Chicago,2842518

TX,Houston,2016582

PA,Philadelphia,1463281

AZ,Phoenix,1461575

TX,San Antonio,1256509

CA,San Diego,1255540

TX,Dallas,1213825

CA,San Jose,912332

如果没有指定表的名称,他根据文件名称来找对应的表

(bin/psql.py masterhbase /data/phoeniximport.csv 没有指定表名称)

bin/psql.py -t BULKDATA masterhbase /data/phoeniximport.csv

查询数据

如果使用sql文件

执行语句

/opt/bigdata/phoenix-4.12.0/bin/psql.py /data/testphoenix.sql

查看表也是有的

我们看下HBase中

主键就是hbase对应的rowkey,为了防止hbase主键的唯一性,可以设置多个字段为主键

这个表就是多个字段的主键

在hbase中添加数据和phoenix添加数据的不同:

添加数据

upsert into bulkdata(state, city, population) values('NY', 'admin', 212313);

查看下

再添加

put 'BULKDATA','41','0:population','2222'

put 'BULKDATA','41','0:city','SHANGHAI'

put 'BULKDATA','41','0:state','tom'

查看下

但是在phoenix中没有

总结:

首先,这张表是在phoenix中创建

在phoenix中更新数据,hbase也会更新

在hbase中更新数据,phoenix是不会更新的

一些小补充:

1、phoenix JAVA API也可以

phoenix-4.12.0-HBase-1.2-client.jar

phoenix-core-4.12.0-HBase-1.2.jar

添加到项目的classpath中,代码风格类似JDBC,这个网上很多,不做过多练习。

2、一个第三方工具

使用Squirrel GUI客户端来连接phoenix

就像MySQL使用Navicat for MySQL,小海豚一样的连接工具,在进行一些数据库操作的时候能够更加的直观和方便

将下载的jar文件双击进行安装,直接下一步即可

将phoenix-4.12.0-HBase-1.2-client.jar拷贝到squirrel安装目录的lib目录下。

启动:进入Drivers标签页创建新的Driver (加号)

参数说明:

Name:hbasetest(可以填写其他名称)

ExampleURL:填写HBase集群的zookeeper集群的连接信息,这里是jdbc:phoenix:hbasemaster:2181

Website URL:这里不填写

Java Class Path:选择phoenix-4.2.2-client.jar(是否选中无所谓,只要在Java Class Path里面就行)

进入Aliases标签页创建新的Alias(加号)

参数说明:

Name:hbasemaster(可以填写其他名称)

Driver:选择ibeifeng.class,即上一步创建的Driver

URL:这里就是HBase集群的zookeeper的连接ip和port

User Name:随便填写

Password:随便填写

在Aliases标签中双击刚刚创建的phoenix打开连接

点击SQL标签进入sql命令行界面,输入语句执行(小人走路的是执行按钮)

练习语句

create table if not exists mytable (

id integer primary key,

name varchar,

sex varchar,

address varchar

);

upsert into mytable values (1, 'wxb', 'male', '010-22222222');

upsert into mytable values (2, 'll', 'male', '010-11111111');

select * from mytable;

select * from "stu_info"

依然注意大小写

在SQuirrel中,执行sql语句时,按Ctrl + Enter键就可以执行了

csv phoenix 导入_phoenix学习相关推荐

  1. mac r 导出csv文件_每天学习一点R:8.数据的导入和输出

    数据的导入 在应用R进行数据分析之前,首先要做的一步工作就是将数据导入R工作环境. R所识别的数据通常为"X·Y"型的多变量数据,格式为txt或csv格式,不同数据间以制表符(Ta ...

  2. Sharepoint学习笔记—ECM系列--3 从.CSV文件导入术语集(Term Sets)

    Sharepoint2010支持直接从CSV文件导入术语集(Term Sets),也就是说你可以先直接在Excel中创建和编辑术语集,然后保存为.CSV文件,再通过Sharepoint2010管理中心 ...

  3. Sharepoint学习笔记—ECM系列--从.CSV文件导入术语集(Term Sets)

    Sharepoint2010支持直接从CSV文件导入术语集(Term Sets),也就是说你可以先直接在Excel中创建和编辑术语集,然后保存为.CSV文件,再通过Sharepoint2010管理中心 ...

  4. navicat 导入csv未响应_使用navicat将csv文件导入mysql

    本文为大家分享了使用navicat将csv文件导入mysql的具体代码,供大家参考,具体内容如下 1.打开navicat,连接到数据库并找到自己想要导入数据的表.数据库表在指定数据库下的表下. 2.右 ...

  5. csv导入mysql php实现_PHP实现csv文件导入mysql数据库的方法

    这篇文章主要介绍了PHP编程实现csv文件导入mysql数据库的方法,涉及php文件读取.转换.数据库的连接.插入等相关操作技巧,需要的朋友可以参考下 具体如下: config.db.php内容如下: ...

  6. php laravel导入excel,Laravel 5使用Laravel Excel实现Excel/CSV文件导入导出的功能详解

    @H_404_0@ 1.简介 @H_404_0@本文主要给大家介绍了关于Laravel 5用Laravel Excel实现Excel/CSV文件导入导出的相关内容,下面话不多说了,来一起看看详细的介绍 ...

  7. Laravel Excel实现Excel/CSV文件导入导出的功能详解(合并单元格,设置单元格样式)

    Laravel Excel实现Excel/CSV文件导入导出(合并单元格,设置单元格样式) 这篇文章主要给大家介绍了关于在Laravel中如何使用Laravel Excel实现Excel/CSV文件导 ...

  8. mysql可视化导入csv文件_我们如何将数据从.CSV文件导入MySQL表?

    实际上,CSV也是一个文本文件,其中的值由逗号分隔,换句话说,我们可以说该文本文件带有CSV(逗号分隔的值).在将数据从.CSV文件导入到MySQL表时,我们需要将FIELDS SEPARATED O ...

  9. 如何将TXT,EXCEL或CSV数据导入ORACLE到对应表中

    如何将TXT,EXCEL或CSV数据导入ORACLE到对应表中 2011-05-12 14:19 方法一,使用SQL*Loader      这个是用的较多的方法,前提必须oracle数据中目的表已经 ...

最新文章

  1. PICRUSt:16S预测宏基因组-扩增子分析锦上添花
  2. ios6.x越狱将不会再呈现了
  3. iOS - OC 术语表
  4. JavaWeb-综合案例(用户信息)-学习笔记04【删除选中功能】
  5. C#生成Excel报表 用MyXls组件生成更完美
  6. Intel 64/x86_64/IA-32/x86处理器 - 通用指令(4) - 比特位设置指令/字节设置指令
  7. 保存div与页面滚动条的位置
  8. Java继承的基本概念及其限制(基础语法二)
  9. lora信号测试小助手_LoRa技术——30个常见问题解答
  10. 在配置Hive的时候出现以下错误:Error: Duplicate key name 'PCS_STATS_IDX' (state=42000,code=1061)
  11. python填充excel单元格颜色_使用python3+openpyxl模块对excel表格进行背景颜色的填充...
  12. python微信刷屏_微信偷偷更新,这功能彻底没了
  13. PAT(甲级)2020年春季考试 7-2 The Judger (25 分) 经验分享与心路历程
  14. vs2012 +WP8sdk 开发WP8应用
  15. 从0开始学大数据(十四)
  16. const char *p与char * const p区别
  17. 纺织服装产业实现智能制造升级
  18. Java古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少?
  19. 守护进程——解放本地PC
  20. 事件的互斥和对立的联系和区别

热门文章

  1. 创始人的领导力和合伙人选择
  2. Linux学习总结(23)——SSH协议详解
  3. Java基础学习总结(96)——Java虚拟机JVM及Tomcat中的JVM有关内存的设置与调优
  4. Java基础学习总结(43)——Java8 Lambda揭秘
  5. Jquery学习总结(1)——Jquery常用代码片段汇总
  6. php小小通讯录,2009年小学信息技术优质课一等奖教学设计四上《小小通讯录》...
  7. 电脑排行榜笔记本_2019联想笔记本电脑排行榜
  8. IntelliJ IDEA 注释模版 输入/**后 不显示配置好的模板
  9. 诺基亚发布最新研究报告:多角度分析5G服务的投资回报
  10. 使用Acronis Disk Director Suite调整分区大小