2017-02-16 3 views
0

Pls助けてください。2つのフィールドのみを4つのフィールドにロードする - ピグとハイブのテーブル

シナリオ:Pigを使用してHDFSからHiveにデータを保存します。

私は、4つのフィールドOrd_Id, Cust_Id, Cust_name, Ord_dateを持つmySQLから派生したファイルを持っています。 Ord_IdとCust_Idの2つのフィールドだけを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

まず、あなたのテーブルは、ブタから保存したい同じカラム名を持つハイブにすでに存在しているはずです。目的はただハイブのちょうど2つのカラムを持つテーブルを持っているのであれば

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

を参照してください、そして、あなただけの--hive-importオプションを使用して、特定のものを2 coulmnsにしてSQOOPの--columns引数を使用して、追加の使用を避けることができますPIGスクリプトの実行

のようなもの -

sqoop import \ 
--connect jdbc:mysql://cloudera.quickstart:3306/retail_db \ 
--table orders \ 
--columns Ord_Id, Cust_Id \ 
--hive-import \ 
--direct 
関連する問題