时间:2016-02-02 18:37:02

标签: json hadoop apache-pig bigdata

需要定制的JSON输出 - (我有两个文件 - 文本文件和模式文件)

abc.txt -

100002030,Tom,peter,eng,block 3,lane 5,california,10021

100003031,Tom,john,doc,block 2,lane 2,california,10021

100004032,Tom,jim,eng,block 1,lane 1,california,10021

100005033,Tom,trek,doc,block 2,lane 2,california,10021

100006034,Tom,peter,eng,block 6,lane 6,california,10021

abc_schema.txt(字段名称和位置)

rollno 1

firstname 2

姓氏3

资格4

地址1 5

地址2 6

city 7

Zipcode 8

规则 -

  • rollno的前6个字符

  • 需要俱乐部地址1 |地址2 |城市

  • 上面的前缀地址

预期输出

{“rollno”:“100002”,“firstname”:“Tom”,“lastname:”peter“,”qualified“:”eng“,”Address“:”block 3 lane 5 california“,”zipcode“ : “10021”}

{“rollno”:“100002”,“firstname”:“Tom”,“lastname:”john“,”qualified“:”doc“,”Address“:”block 2 lane 2 california“,”zipcode“ : “10021”}

{“rollno”:“100004”,“firstname”:“Tom”,“lastname:”jim“,”qualified“:”eng“,”Address“:”block 1 lane 1 california“,”zipcode“ : “10021”}

{“rollno”:“100005”,“firstname”:“Tom”,“lastname:”trek“,”qualified“:”doc“,”Address“:”block 2 lane 2 california“,”zipcode“ : “10021”}

{“rollno”:“100006”,“firstname”:“Tom”,“lastname:”peter“,”qualified“:”eng“,”Address“:”block 6 lane 6 california“,”zipcode“ : “10021”}

我不想对字段进行硬编码,而是从模式文件中读取,我们的想法是拥有可重用的代码。像循环模式文件和文本文件

之类的东西

1 个答案:

答案 0 :(得分:0)

A = load 'abc.txt' using PigStorage(',') as (rollno, Fname,Lname,qua,add1,add2,city,Zipcode);

B = foreach A generate rollno, Fname,Lname,qua,concate (add1,add2,city) ,Zipcode;


C= STORE B
    INTO 'first_table.json' 
    USING JsonStorage();

希望这有帮助。