【问题标题】:how to load a dataset with both tabs and comma in pig如何在pig中加载带有制表符和逗号的数据集
【发布时间】:2018-10-31 02:05:32
【问题描述】:

我正在尝试将其加载到 pig 中,但我很难将其加载为五个不同的字段。

我的数据集

QTM 2009,0.53,0.47,1365900
QTM 2009,0.56,0.54,1246100
QTM 2009,0.6,0.54,1023600

如果我尝试使用 TextLoader 加载它,它会将行读取为一个字段。

我还尝试将其加载为两个字段,然后使用 STRSPLIT 命令,然后将两者结合起来。问题在于它默认将其声明为字节数组。我希望能够执行聚合。 我使用以下命令来做到这一点:

A = Load 'NYSEB.txt' AS(Symbol:chararray, Detail:chararray);
B = Foreach A GENERATE (STRSPLIT(Symbol, ',',1)), (STRSPLIT(Detail, ',', 
4));
B = Foreach A GENERATE
flatten(STRSPLIT (Symbol, ',',1)),
flatten(STRSPLIT(Detail, ',', 4));

有人可以帮助我吗:我希望我的领域是 (symbol:string, year:string, op:double, cp:double, vol:int)

【问题讨论】:

    标签: apache-pig


    【解决方案1】:

    将文件加载到 4 个字段中,以逗号作为分隔符,然后在第一个字段上使用 strsplit 以获得所需的 5 个字段。

     A = LOAD 'NYSEB.txt' USING PigStorage(',') AS (symbol_year:chararray, op:double, cp:double, vol:int);
     B = FOREACH A GENERATE FLATTEN(STRSPLIT(symbol_year,'\\t',2)) as (symbol:chararray,year:chararray),op,cp,vol; 
     C = FOREACH B GENERATE symbol, year, op, cp, vol;
     DUMP C;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-25
      • 1970-01-01
      • 2014-06-21
      • 1970-01-01
      相关资源
      最近更新 更多