仅加载2个字段输出4个字段-清管器到配置单元表

s4chpxco  于 2021-06-21  发布在  Pig
关注(0)|答案(2)|浏览(621)

请帮忙建议。
场景:使用pig将数据从hdfs存储到hive。
我有一个从mysql获取的文件,它有4个字段 Ord_Id, Cust_Id, Cust_name, Ord_date . 我喜欢只存储2个字段ord\u id和cust\u 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();

谢谢。

busg9geu

busg9geu1#

如果目标是在配置单元中只有一个只有两列的表,那么您可以使用sqoop --columns 把这两个问题具体化 --hive-import 选项并避免同时使用额外的pig脚本执行。
类似于-

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

1hdlvixo2#

首先,您的表应该已经存在于配置单元中,并且具有要从pig存储的相同列名。

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

相关问题