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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/fengzheku/article/details/50418348

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');


猜你喜欢

转载自blog.csdn.net/fengzheku/article/details/50418348