hdfs phoenix 导入_Phoenix批量导入数据至Hbase中

来源于  https://blog.csdn.net/u013850277/article/details/81040686

笔者环境:hdp2.5.3 + centos6.9 + phoenix4.7

官网文档:

Phoenix provides two methods for bulk loading data into Phoenix tables:

Single-threaded client loading tool for CSV formatted data via the psql command

MapReduce-based bulk load tool for CSV and JSON formatted data

The psql tool is typically appropriate for tens of megabytes, while the MapReduce-based loader is typically better for larger load volumes.

上述大意为:phoenix有两种方式供批量写数据。一种是单线程psql方式,另一种是mr分布式。单线程适合一次写入十来兆的文件,mr方式更加适合写大批量数据。

下面分别用两种方式进行测试批量写数据

准备阶段

1、 创建phoenix表(对应的hbase表并不存在)

CREATE TABLE example (

my_pk bigint not null,

m.first_name varchar(50),

m.last_name varchar(50)

CONSTRAINT pk PRIMARY KEY (my_pk));

2、创建二级索引

create index example_first_name_index on example(m.first_name);

3、创建data.csv文件,并上传一份至hdfs中

12345,John,Doe

67890,Mary,Poppins

4、修改内容为如下再上传至hdfs

12345,Joddhn,Dois

67890,Maryddd,Poppssssins

123452,Joddhn,Dois

678902,Maryddd,Poppssssins2

批量写入数据

单线程psql方式如下:

[root@hdp18 Templates]#

/usr/hdp/2.5.3.0-37/phoenix/bin/psql.py -t EXAMPLE hdp14:2181 /root/Templates/data.csv

注:

(1)/root/Templates/data.csv为本地文件

(2) hdp14:2181为zookeeper对应的主机以及端口

(3) 上述语句还支持不少参数,如-t为表名,-d为文件内容分割符,默认为英文符的逗号。

验证数据是否写入正常以及索引表是否有进行同步更新

0: jdbc:phoenix:hdp14,hdp15> select * from example;

+--------+-------------+------------+

| MY_PK | FIRST_NAME | LAST_NAME |

+--------+-------------+------------+

| 12345 | John | Doe |

| 67890 | Mary | Poppins |

+--------+-------------+------------+

2 rows selected (0.023 seconds)

0: jdbc:phoenix:hdp14,hdp15> select * from example_first_name_index;

+---------------+---------+

| M:FIRST_NAME | :MY_PK |

+---------------+---------+

| John | 12345 |

| Mary | 67890 |

+---------------+---------+

2 rows selected (0.018 seconds)

通过上述结果可知批量导入数据正常以及批量导入数据是会自动更新索引表的。

mr批量写数据方式

[root@hdp14 ~]# HADOOP_CLASSPATH=/usr/hdp/2.5.3.0-37/hbase/lib/hbase-protocol.jar:/usr/hdp/2.5.3.0-37/hbase/conf/ hadoop jar /usr/hdp/2.5.3.0-37/phoenix/phoenix-4.7.0.2.5.3.0-37-client.jar org.apache.phoenix.mapreduce.CsvBulkLoadTool --table EXAMPLE --input /tmp/YCB/data.csv

1

注:

1、官网指出如果为phoenix4.0及以上要用如下方式

(HADOOP_CLASSPATH=/path/to/hbase-protocol.jar:/path/to/hbase/conf hadoop jar phoenix--client.jar org.apache.phoenix.mapreduce.CsvBulkLoadTool --table EXAMPLE --input /data/example.csv)

1

2、/tmp/YCB/data.csv为hdfs上对应的文件路径

3、该命令可

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值