热门标签 | 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键就可以执行了



推荐阅读
  • 本文将详细介绍如何配置并整合MVP架构、Retrofit网络请求库、Dagger2依赖注入框架以及RxAndroid响应式编程库,构建高效、模块化的Android应用。 ... [详细]
  • 如何使用Maven将依赖插件一并打包进JAR文件
    本文详细介绍了在使用Maven构建项目时,如何将所需的依赖插件一同打包进最终的JAR文件中,以避免手动部署依赖库的麻烦。 ... [详细]
  • Hadoop MapReduce 实战案例:手机流量使用统计分析
    本文通过一个具体的Hadoop MapReduce案例,详细介绍了如何利用MapReduce框架来统计和分析手机用户的流量使用情况,包括上行和下行流量的计算以及总流量的汇总。 ... [详细]
  • Java虚拟机及其发展历程
    Java虚拟机(JVM)是每个Java开发者日常工作中不可或缺的一部分,但其背后的运作机制却往往显得神秘莫测。本文将探讨Java及其虚拟机的发展历程,帮助读者深入了解这一关键技术。 ... [详细]
  • Python脚本实现批量删除多种类型文件的扩展名
    本文介绍了一个Python脚本,用于批量处理并移除指定目录下不同格式文件(如png、jpg、xml、json、txt、gt等)的文件扩展名。该方法通过递归遍历文件夹中的所有文件,并对每个文件执行重命名操作。 ... [详细]
  • 利用Python在DragonBoard 410c上解析GPS数据获取位置信息
    本文介绍了如何在DragonBoard 410c开发板上使用Python脚本来解析GPS报文,从而获取精确的位置信息。DragonBoard 410c集成了GPS、Wi-Fi和高性能GPU,非常适合用于各种物联网项目。 ... [详细]
  • 本文详细介绍了使用dex2jar和jd-gui工具反编译Android应用(APK)以查看其源代码的具体步骤。通过更改文件扩展名、解压文件、转换dex文件为jar文件,并使用JD-GUI查看最终的Java源代码。 ... [详细]
  • 本文详细介绍了Apache Spark 2.2.0版本中集群模式的基本概念和工作流程,包括如何通过集群管理器分配资源,以及Spark应用程序在集群中的运行机制。链接:http://spark.apache.org/docs/2.2.0/cluster-overview.html ... [详细]
  • Maven快照版本管理及更新策略详解
    本文深入探讨了Maven中的快照版本管理和更新策略,解释了快照版本与正式版本的区别,并提供了如何配置快照更新策略的方法,以确保项目依赖始终保持最新。 ... [详细]
  • 在CentOS 7中部署Nginx并配置SSL证书
    本文详细介绍了如何在CentOS 7操作系统上安装Nginx服务器,并配置SSL证书以增强网站的安全性。适合初学者和中级用户参考。 ... [详细]
  • 将XML数据迁移至Oracle Autonomous Data Warehouse (ADW)
    随着Oracle ADW的推出,数据迁移至ADW成为业界关注的焦点。特别是XML和JSON这类结构化数据的迁移需求日益增长。本文将通过一个实际案例,探讨如何高效地将XML数据迁移至ADW。 ... [详细]
  • 如何高效学习鸿蒙操作系统:开发者指南
    本文探讨了开发者如何更有效地学习鸿蒙操作系统,提供了来自行业专家的建议,包括系统化学习方法、职业规划建议以及具体的开发技巧。 ... [详细]
  • Gradle 是 Android Studio 中默认的构建工具,了解其基本配置对于开发效率的提升至关重要。本文将详细介绍如何在 Gradle 中定义和使用共享变量,以确保项目的一致性和可维护性。 ... [详细]
  • 本文分享了作者在使用LaTeX过程中的几点心得,涵盖了从文档编辑、代码高亮、图形绘制到3D模型展示等多个方面的内容。适合希望深入了解LaTeX高级功能的用户。 ... [详细]
  • 本文介绍了Tomcat的基本操作,包括启动、关闭及首次访问的方法,并详细讲解了如何在IDEA中创建Web项目,配置Servlet及其映射,以及如何将项目部署到Tomcat。 ... [详细]
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社区 版权所有