如何使用pig脚本将特定列中的数据拆分为另外两列?

时间:2015-04-27 11:07:34

标签: apache-pig

您好我正在处理大数据,因为我是一个新的蜜蜂到猪编程帮助我获得所需的输出。我有一个csv文件,其中有许多列,其中一列是价格,其中有数据类似于以下内容:

(10 Lacs)
(20 to 30 Lacs)
And i need this to be splitted as 
price    min         max
10      null        null
null    20          30  

我尝试过以下代码

a = LOAD  '/user/folder1/filename.csv' using PigStorage(',')as(SourceWebsite:chararray,PropertyType:chararray,PropertyId:chararray,title:chararray,bedroom:int,bathroom:int,Balconies:chararray,price:chararray,pricepersqft:chararray,builtuparea:chararray,address:chararray,otherdetails:chararray,description:chararray,posted:chararray,Features:chararray,ContactDetails:chararray);
b = FOREACH a GENERATE STRSPLIT(price, 'to');
c = FOREACH b GENERATE FLATTEN(STRSPLIT(Price,',')) AS (MAX:int,MIN:int);
dump c;

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

我刚遇到同样的问题,这就是我设法解决它的方法。

假设名为outputraw.outputlineraw的列如下所示:

abc|def 
gh|j

然后我把它分成多个列,如下所示:

output_in_columns = FOREACH output_raw GENERATE
    FLATTEN(STRSPLIT(output_line_raw,'\\|'));

为了测试它是否成功,我在引用列后转储了结果:

output_selection = FOREACH output_in_columns GENERATE
    $0,
    $1; 

DUMP output_selection;