热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

csvphoenix导入_phoenix学习

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

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

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

Phoenix可以看成是mysql

准备安装包

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

524f5b755e7102d26694443d546bc42d.png

解压Phoenix

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

e02c1053238cbed6415459b5c4de25b9.png

改下名字

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

3300a36728f75911a235e87dbee3631e.png

看下目录结构

540d4971551cd92248c37fdeb8f02e39.png

将jar拷贝到hbase的lib目录下

phoenix-4.12.0-HBase-1.2-client.jar

phoenix-core-4.12.0-HBase-1.2.jar

7801b9e44fc7d70eb1ccfe74c4f8af6c.png

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/

7a30b0ffe54e780e3766b8790d1bd3d2.png

重启hbase服务,让配置生效

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

f4e74528475e05a7e30d16a5276ba0d8.png

   

                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

        

6aff0a94247ac621d161fb8a853ccc90.png

安装工具

yum -y install python-argparse

d3e5077080db2ce0828f99d31b7d71a9.png

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

bin/sqlline.py masterhbase:2181

981882532e51c3bb869897b19a6e8d11.png

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

d69dbe66125efdd788f5c2475e6d5265.png

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

5e995c307734f54f1288ea3229e346b7.png

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

197c3359252ae08340adf3c984d9b79d.png

创建表

CREATE TABLE user (

id varchar PRIMARY KEY,

name varchar ,

passwd varchar

);

d36f2a0d5dd458cd1825a69ce8dc8408.png

在HBase Shell中可以看到

247b5464d0a59a9dbf75df57c3597a91.png

hbase区分大小写

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

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

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

fbacb37c7523cbe518613d23bd83c7e2.png

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

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

3500f59b309676650d7e24c2f08f7456.png

在HBase Shell中查看

scan 'USER'

2b987443f4adfc85fbb9562cc601cbd7.png

phoenix删除表

drop table user;

df062391c0f4c5b8c6ed208c27633a00.png

phoenix指定列族

CREATE TABLE user (

id varchar PRIMARY KEY,

INFO.name varchar ,

INFO.passwd varchar

);

c12472534f4bc450c98ee5bc7b89d722.png

在hbase shell中查看

24f247a0a332210bffba84355aae8c51.png

phoenix查询语句:

select * from user;

762e55a0a69374d7c966dc2b8f65255b.png

select name from user where id ='001';

48c244ea3e1d60587871a92820ba296f.png

phoenix删除语句:

delete from user where id='001';

af1d4d0ba85dbceb2b7a8b598348f720.png

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

hbase与phoenix表与表进行关联

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

在HBase中有一张表

ddb3e9f4fa1e1153163b2556852a263d.png

我们在phoenix做映射创建

create table "stu_info_importtsv"(

"ROW" varchar primary key,

"f1"."location" varchar,

"f2"."age" varchar,

"f1"."name" varchar,

"f3"."addr" varchar

);

11aecd7685c552d37bddd6869db93746.png

查看下数据

9d642dedbfa08492de59872fb36b4494.png

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

9a9c5aa0a477fc5d46cd9d3c287d85fb.png

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)

);

86db8d367fa1dfec535642f22f1fd99f.png

准备数据

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

e62e3fb5c64e833f023ab4b02e3cec7e.png

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

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

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

336931144f686efbe732fe31d3a0d4a8.png

查询数据

b4dfafa782ce9bd07b79c1bedb64d4bc.png

如果使用sql文件

0e49d8cec18485a3a74b6fdaf2329103.png

执行语句

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

da2bc18b0a36ef57cd1323d9f2698a62.png

查看表也是有的

e6c4a753f7de99a4492e65e8a62e83fd.png

我们看下HBase中

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

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

d62f824e3f017f6059be2bd30d24ace7.png

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

添加数据

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

6312f2ba7d7bc5f573ffcf5104db8442.png

查看下

2fba8cf5b87b468eb6d04645193a53ab.png
9f0fc24a5f738f0d1d9e33d5ed9fc397.png

再添加

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

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

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

a3c76a7af0df1bb4b19213ec7ed68b9b.png

查看下

e9e6eac9534701be339cce4fff78ce0f.png

但是在phoenix中没有

9a99fc2442f641e9bf7dde2b04195915.png

总结:

首先,这张表是在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键就可以执行了



推荐阅读
  • 本文介绍了如何利用Shell脚本高效地部署MHA(MySQL High Availability)高可用集群。通过详细的脚本编写和配置示例,展示了自动化部署过程中的关键步骤和注意事项。该方法不仅简化了集群的部署流程,还提高了系统的稳定性和可用性。 ... [详细]
  • 本文深入解析了通过JDBC实现ActiveMQ消息持久化的机制。JDBC能够将消息可靠地存储在多种关系型数据库中,如MySQL、SQL Server、Oracle和DB2等。采用JDBC持久化方式时,数据库会自动生成三个关键表:`activemq_msgs`、`activemq_lock`和`activemq_ACKS`,分别用于存储消息数据、锁定信息和确认状态。这种机制不仅提高了消息的可靠性,还增强了系统的可扩展性和容错能力。 ... [详细]
  • FreeBSD环境下PHP GD库安装问题的详细解决方案
    在 FreeBSD 环境下,安装 PHP GD 库时可能会遇到一些常见的问题。本文详细介绍了从配置到编译的完整步骤,包括解决依赖关系、配置选项以及常见错误的处理方法。通过这些详细的指导,开发者可以顺利地在 FreeBSD 上完成 PHP GD 库的安装,确保其正常运行。此外,本文还提供了一些优化建议,帮助提高安装过程的效率和稳定性。 ... [详细]
  • 从0到1搭建大数据平台
    从0到1搭建大数据平台 ... [详细]
  • 在 Ubuntu 中遇到 Samba 服务器故障时,尝试卸载并重新安装 Samba 发现配置文件未重新生成。本文介绍了解决该问题的方法。 ... [详细]
  • 通过使用Sqoop导入工具,可以精确控制并高效地将表数据的特定子集导入到HDFS中。具体而言,可以通过在导入命令中添加WHERE子句来指定所需的数据范围,从而在数据库服务器上执行相应的SQL查询,并将查询结果高效地存储到HDFS中。这种方法不仅提高了数据导入的灵活性,还确保了数据的准确性和完整性。 ... [详细]
  • 在CentOS 7环境中安装配置Redis及使用Redis Desktop Manager连接时的注意事项与技巧
    在 CentOS 7 环境中安装和配置 Redis 时,需要注意一些关键步骤和最佳实践。本文详细介绍了从安装 Redis 到配置其基本参数的全过程,并提供了使用 Redis Desktop Manager 连接 Redis 服务器的技巧和注意事项。此外,还探讨了如何优化性能和确保数据安全,帮助用户在生产环境中高效地管理和使用 Redis。 ... [详细]
  • 在Linux系统中避免安装MySQL的简易指南
    在Linux系统中避免安装MySQL的简易指南 ... [详细]
  • Unity与MySQL连接过程中出现的新挑战及解决方案探析 ... [详细]
  • 服务器部署中的安全策略实践与优化
    服务器部署中的安全策略实践与优化 ... [详细]
  • 本文详细介绍了在CentOS 6.5 64位系统上使用阿里云ECS服务器搭建LAMP环境的具体步骤。首先,通过PuTTY工具实现远程连接至服务器。接着,检查当前系统的磁盘空间使用情况,确保有足够的空间进行后续操作,可使用 `df` 命令进行查看。此外,文章还涵盖了安装和配置Apache、MySQL和PHP的相关步骤,以及常见问题的解决方法,帮助用户顺利完成LAMP环境的搭建。 ... [详细]
  • 本指南详细介绍了在Linux环境中高效连接MySQL数据库的方法。用户可以通过安装并使用`mysql`客户端工具来实现本地连接,具体命令为:`mysql -u 用户名 -p 密码 -h 主机`。例如,使用管理员账户连接本地MySQL服务器的命令为:`mysql -u root -p pass`。此外,还提供了多种配置优化建议,以确保连接过程更加稳定和高效。 ... [详细]
  • PHP自学必备:从零开始的准备工作与工具选择 ... [详细]
  • 【漫画解析】数据已删,存储空间为何未减?揭秘背后真相
    在数据迁移过程中,即使删除了原有数据,存储空间却未必会相应减少。本文通过漫画形式解析了这一现象背后的真相。具体来说,使用 `mysqldump` 命令进行数据导出时,该工具作为 MySQL 的逻辑备份工具,通过连接数据库并查询所需数据,将其转换为 SQL 语句。然而,这种操作并不会立即释放存储空间,因为数据库系统可能保留了已删除数据的碎片信息。文章进一步探讨了如何优化存储管理,以确保数据删除后能够有效回收存储空间。 ... [详细]
  • Presto:高效即席查询引擎的深度解析与应用
    本文深入解析了Presto这一高效的即席查询引擎,详细探讨了其架构设计及其优缺点。Presto通过内存到内存的数据处理方式,显著提升了查询性能,相比传统的MapReduce查询,不仅减少了数据传输的延迟,还提高了查询的准确性和效率。然而,Presto在大规模数据处理和容错机制方面仍存在一定的局限性。本文还介绍了Presto在实际应用中的多种场景,展示了其在大数据分析领域的强大潜力。 ... [详细]
author-avatar
MiMe淘宝店
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有