【问题标题】:PIG script for creating IDxCITY matrix from given csv file用于从给定 csv 文件创建 IDxCITY 矩阵的 PIG 脚本
【发布时间】:2015-05-23 22:57:56
【问题描述】:

我有一个包含 ID、CITY 和计数信息的输入文件,如下所示,我想创建一个 csv 文件,其中包含每个 CITY 的 ID 和计数。如果 ID 未与 CITY 一起观看,则计数将写入“0”。我尝试使用 group by、cogroup 和 flatten 生成猪脚本,但无法提供此示例输出。

我怎样才能为此编写一个猪脚本?

输入(ID,城市,计数):

00004589,IZMIR,2
00005275,KOCAELI,1
00005275,ISTANBUL,1
00008523,ESKISEHIR,2

输出:

ID,IZMIR,ISTANBUL,ESKISEHIR,KOCAELI
00004589,2,0,0,0
00005275,0,1,0,1
00008523,0,0,2,0

【问题讨论】:

    标签: apache-pig flatten


    【解决方案1】:

    您可以使用以下脚本来创建矩阵:

    DATA = load '/tmp/data.csv' Using PigStorage(',') as (ID:chararray,CITY:chararray,COUNT:chararray);

    ESKISEHIR = 按(CITY 匹配“ESKISEHIR”)过滤数据;

    ISTANBUL = 按(CITY 匹配“ISTANBUL”)过滤数据;

    IZMIR = 按(CITY 匹配“IZMIR”)过滤数据;

    KOCAELI = 按(CITY 匹配“KOCAELI”)过滤数据;

    IDLIST = foreach DATA 生成 $0 作为 ID;

    IDLIST = 不同的 IDLIST;

    COGROUPED = cogroup IDLIST by $0,IZMIR by $0,ISTANBUL by $0,ESKISEHIR by $0,KOCAELI by $0;

    CG_CITY = foreach COGROUPED 生成 FLATTEN($1),FLATTEN ((IsEmpty($2.$2) ? {('0')} : $2.$2)),FLATTEN ((IsEmpty($3.$2) ? {(' 0')} : $3.$2)),FLATTEN ((IsEmpty($4.$2) ? {('0')} : $4.$2)),FLATTEN ((IsEmpty($5.$2) ? {('0' )} : $5.$2));

    STORE CG_CITY INTO '/tmp/id_city_matrix' USING PigStorage(',');

    【讨论】:

      猜你喜欢
      • 2017-03-20
      • 1970-01-01
      • 2019-02-15
      • 2017-03-24
      • 2017-10-28
      • 2018-08-03
      • 1970-01-01
      • 2021-11-15
      • 1970-01-01
      相关资源
      最近更新 更多