2017-02-16 10 views
0

Пособие по оказанию помощи Pls.Загрузите 2 поля только из 4 полей - стол для свиней к ульту

Сценарий: Храните данные с HDFS в Hive с помощью Pig.

У меня есть файл, который вычеркивает из 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

Если цель состоит в том, чтобы просто иметь таблицу с только две колонки в улей, то вы можете просто использовать --columns аргумент SQOOP в к конкретным этих двух coulmns с --hive-import вариант и избежать использования дополнительных Выполнение скрипта PIG в целом.

что-то вроде -

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

 Смежные вопросы

  • Нет связанных вопросов^_^