Хранить только ненулевые значения результата в файле - PullRequest
0 голосов
/ 19 февраля 2019

Я также предоставил вывод для каждого оператора.Я просто хотел, чтобы конечный результат записывался в файл только при наличии значения.

NEW_roles = LOAD '/folder/newata/roles.gz' USING PigStorage ('\ t') AS (идентификатор, имя, is_active, created_at, updated_at);NEW_roles_t = FOREACH NEW_roles генерировать идентификатор, имя, is_active, ToString (созданный_кат, 'гггг-ММ-дд чч: мм: сс') как создан_кат: chararray, ToString (обновленный_ат, 'гггг-ММ-дд чч: мм: сс')as updated_at: chararray;OLD_roles = LOAD '/folder//old-data/roles.gz' ИСПОЛЬЗОВАТЬ PigStorage ('\ t') AS (идентификатор, имя, is_active, made_at, updated_at);OLD_roles_t = FOREACH OLD_roles генерировать идентификатор, имя, is_active, ToString (созданный_кат, 'гггг-ММ-дд чч: мм: сс') как созданный_кат: chararray, ToString (updated_at, 'гггг-ММ-дд чч: мм: сс)as updated_at: chararray;

co_group = COGROUP NEW_roles_t by id , OLD_roles_t by id; dump co_group;
    (1,{(1,CCCCO Admin,t,,)},{(1,CCCCO Admin,t,,)})
    (2,{(2,COCI Read Only,t,,)},{(2,COCI Read Only,t,,)}) 
    (3,{(3,College Admin,t,,)},{(3,College Admin,t,,)}) 
    (4,{(4,College Submitter,t,,)},{(4,College Submitter,t,,)})
    (5,{(5,CCCCO Reviewer,t,,)},{(5,CCCCO Reviewer,t,,)})
    (6,{},{(6,Test,t,,)}) (7,{},{(7,Test1,t,,)})
    (8,{},{(8,Test2,t,,)})

filtered_delete = FILTER co_group BY IsEmpty($1); 
DUMP filtered_delete; 
(6,{},{(6,Test,t,,)}) 
(7,{},{(7,Test1,t,,)}) 
(8,{},{(8,Test2,t,,)}) 

flat_delete = FOREACH filtered_delete GENERATE  FLATTEN((IsEmpty(NEW_roles_t)? OLD_roles_t: null)); 
DUMP flat_delete; 
(6,Test,t,,) 
(7,Test1,t,,) 
(8,Test2,t,,) 

intermediate_delete = FOREACH flat_delete GENERATE $0 as id,$1 as name,$2 as is_active,$3 as created_at,$4 as updated_at; 
dump intermediate_delete; 
(6,Test,t,,) (7,Test1,t,,) (8,Test2,t,,)

/*WRITE IT IN FILE*/ 
/*If the intermediate_delete has no records, we are not supposed to create a file. 
Based on the count of records in dump intermediate_delete we can write a condition to acheive this. 
But don't know  how I used count function to get the no.of records 
but after that I was not able to write any condition based logic to write into a file only when record count is greater than 0
*/ 
STORE intermediate_insert INTO '/folder/refreshed-data/roles_diff.txt' USING PigStorage('\t');
...