Pig脚本从Hive中load数据并存入到Hbase中

1、我们先建一个Hive表test01:

create table test01(name String, age int, phone String,province String, city String) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' STORED AS TEXTFILE;

2、在目录data1下创建文件testdata,里面内容为:

Liming    20    15960096791    Beijing    Beijing
Wanggang    30    13854285991    Shandong    Qingdao

中间是以tab键分隔开

3、往hive表里插入数据:

load data local inpath '/data1/testdata' overwrite into table test01;

4、创建Hbase表,确定列簇名

create 'hive01',{NAME => 'info', VERSIONS => 1},{NAME => 'address', VERSIONS => 1}

5、创建pig脚本:

--pig脚本执行需要的jar包,包含hadoop,hive,hbase等基本的jar包

register /opt/cloudera/parcels/CDH/jars/*.jar

--从hive表里load数据
data = load 'test03' USING org.apache.hcatalog.pig.HCatLoader();

--遍历data,把第一个数据当做Hbase表的key
data1= foreach data GENERATE (chararray)$0 as key,(chararray)$1,(chararray)$2,(chararray)$3,(chararray)$4;

--存入Hbase表hive01里,其中$0是hbase表的key

STORE data1 INTO 'hbase://hive01' USING org.apache.pig.backend.hadoop.hbase.HBaseStorage('info:age,info:phone,address:province,address:city');

6、另一种pig脚本:

如果hive的存储格式是parquet,我们可以用ParquetLoader去获取hive中的数据,这种load方式的路径是hive表存在hdfs上的路径而不是表名:

register /opt/cloudera/parcels/CDH/jars/*.jar

--load的路径是hive表所在hdfs的位置
data = load '/user/hive/warehouse/test03/' USING parquet.pig.ParquetLoader as (name:chararray,age:chararray,phone:chararray,province:chararray,city:chararray);


data1= foreach data GENERATE (chararray)$0,(chararray)$1,(chararray)$2,(chararray)$3,(chararray)$4;

STORE data1 INTO 'hbase://hive01' USING org.apache.pig.backend.hadoop.hbase.HBaseStorage('info:age,info:phone,address:province,address:city');


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值