2017-02-16 34 views
0

请帮助建议。仅加载4个字段的2个字段 - Pig to Hive表

场景:使用Pig将数据从HDFS存储到Hive。

我有从mySQL中挖出的文件,它有4个字段Ord_Id, Cust_Id, Cust_name, Ord_date。我喜欢将仅2个字段Ord_Id和Cust_Id存储到Hive。我怎么能这样做?请建议。

下面的代码不能执行:

pig -useHCatalog 
orders = LOAD '<HDFS_file_path>' USAGE PigStorage(',') AS (Ord_Id:Int, Cust_Id:Int, Cust_name:chararray, Ord_date:chararray); 
STORE orders INTO 'pig_demo.orders' USAGE org.apache.hive.hcatalog.pig.HCatStorer(); 

感谢。

回答

0

首先,您的表格应该已经存在于配置单元中,并且您想从猪存储相同的列名称。

orders = LOAD '<HDFS_file_path>' USAGE PigStorage(',') AS 
(Ord_Id:Int, Cust_Id:Int, Cust_name:chararray, Ord_date:chararray); 

select_columns = FOREACH orders GENERATE Ord_Id AS ord_id, Cust_Id AS cust_id; 

STORE select_columns INTO 'pig_demo.orders' USING org.apache.hive.hcatalog.pig.HCatStorer(); 

还提到HCatalog LoadStore

0

如果目的是只是有一个表在蜂巢只是两列,那么你可以只用SQOOP的--columns说法在特定的这两个coulmns与--hive-import选项,并避免使用附加PIG脚本一起执行。

像 -

sqoop import \ 
--connect jdbc:mysql://cloudera.quickstart:3306/retail_db \ 
--table orders \ 
--columns Ord_Id, Cust_Id \ 
--hive-import \ 
--direct