1. 程式人生 > >Pig指令碼從Hive中load資料並存入到Hbase中

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