Hive 仅从4个字段中加载2个字段-清管器到蜂巢表

Hive 仅从4个字段中加载2个字段-清管器到蜂巢表,hive,hdfs,apache-pig,Hive,Hdfs,Apache Pig,请帮忙建议 场景:使用Pig将数据从HDFS存储到配置单元 我有一个从mySQL获取的文件,它有4个字段Ord\u Id、Cust\u Id、Cust\u name、Ord\u date。我只想将Ord_Id和Cust_Id两个字段存储到Hive。我怎么做呢?请告知 无法执行以下代码: pig -useHCatalog orders = LOAD '<HDFS_file_path>' USAGE PigStorage(',') AS (Ord_Id:Int, Cust_Id:Int,

请帮忙建议

场景:使用Pig将数据从HDFS存储到配置单元

我有一个从mySQL获取的文件,它有4个字段
Ord\u Id、Cust\u Id、Cust\u name、Ord\u date
。我只想将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();
pig-useHCatalog
订单=将“”存储(“,”)加载为(订单Id:Int,客户Id:Int,客户名称:chararray,订单日期:chararray);
将订单存储到'pig_demo.orders'用法org.apache.hive.hcatalog.pig.HCatStorer();

谢谢。

首先,您的表应该已经存在于配置单元中,并且具有要从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();
orders=将“”存储(',')加载为
(订单编号:Int,客户编号:Int,客户名称:chararray,订单日期:chararray);
选择_columns=FOREACH orders生成Ord_Id作为Ord_Id,Cust_Id作为Cust_Id;
使用org.apache.hive.hcatalog.pig.HCatStorer()将select_列存储到“pig_demo.orders”中;

另请参考

如果目标是在配置单元中只包含两列的表,那么您可以在中使用SQOOP的
--columns
参数,使用
--hive import
选项指定这两个coulmn,并避免使用额外的PIG脚本执行

类似于-

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