将相同的值写入具有相同 ID 的所有行
Write the same value to all rows with the same ID
我正在寻找一种方法来将相同的值写入具有相同 ID 的所有记录。我使用 Apache Pig 在 HDFS 环境中加载这个 table 并且只有这个转换(作为 UDF)才需要 python 代码这是一个例子:
ID ; firstname ; lastname
1234 Alex Jones
1234 Frank na
1234 Maria na
我需要的是将姓氏 (Jones) 分配给具有相同 ID 的每个人。我知道如何用 pandas 做到这一点,但对我来说问题是我必须在不使用任何包的情况下做到这一点。
任何建议表示赞赏!谢谢!
过滤ID、姓氏组合,然后将ID、姓氏区分成一个关系并将其与原始关系连接起来,最后生成所需的列。
假设数据加载到关系A中,则
B = FILTER A BY (lastname != 'na');
C = FOREACH B GENERATE ID,lastname;
D = DISTINCT C;
E = JOIN A BY ID,D BY ID;
F = FOREACH E GENERATE A.ID,A.firstname,D.lastname;
DUMP F;
关系 D 将具有 1234,Jones
,因为您过滤了“na”,然后 distinct.Then 在连接关系 E 之后看起来像
1234 Alex Jones 1234 Jones
1234 Frank na 1234 Jones
1234 Maria na 1234 Jones
从上面你可以得到关系 A 的前两列和关系 D.Finally F 的最后一列
1234 Alex Jones
1234 Frank Jones
1234 Maria Jones
我正在寻找一种方法来将相同的值写入具有相同 ID 的所有记录。我使用 Apache Pig 在 HDFS 环境中加载这个 table 并且只有这个转换(作为 UDF)才需要 python 代码这是一个例子:
ID ; firstname ; lastname
1234 Alex Jones
1234 Frank na
1234 Maria na
我需要的是将姓氏 (Jones) 分配给具有相同 ID 的每个人。我知道如何用 pandas 做到这一点,但对我来说问题是我必须在不使用任何包的情况下做到这一点。 任何建议表示赞赏!谢谢!
过滤ID、姓氏组合,然后将ID、姓氏区分成一个关系并将其与原始关系连接起来,最后生成所需的列。 假设数据加载到关系A中,则
B = FILTER A BY (lastname != 'na');
C = FOREACH B GENERATE ID,lastname;
D = DISTINCT C;
E = JOIN A BY ID,D BY ID;
F = FOREACH E GENERATE A.ID,A.firstname,D.lastname;
DUMP F;
关系 D 将具有 1234,Jones
,因为您过滤了“na”,然后 distinct.Then 在连接关系 E 之后看起来像
1234 Alex Jones 1234 Jones
1234 Frank na 1234 Jones
1234 Maria na 1234 Jones
从上面你可以得到关系 A 的前两列和关系 D.Finally F 的最后一列
1234 Alex Jones
1234 Frank Jones
1234 Maria Jones