【问题标题】:Write the same value to all rows with the same ID将相同的值写入具有相同 ID 的所有行
【发布时间】:2019-12-10 07:33:06
【问题描述】:

我正在寻找一种将相同值写入具有相同 ID 的所有记录的方法。我使用 Apache Pig 在 HDFS 环境中加载此表,python 代码仅用于此转换(作为 UDF)这是一个示例:

    ID   ; firstname ; lastname
   1234    Alex        Jones
   1234    Frank       na
   1234    Maria       na

我需要将姓氏 (Jones) 分配给具有相同 ID 的每个人。我知道如何用 pandas 做到这一点,但对我来说,问题是我必须在不使用任何包的情况下做到这一点。 任何建议表示赞赏!谢谢!

【问题讨论】:

  • 这是字典吗?一个字符串?
  • 它是什么数据类型?
  • 这是一个以字符串为值的表格。 @MichaelBianconi
  • @Y.C.T 用什么实现的表?
  • 我使用 Apache Pig 在 HDFS 环境中加载的表,python 代码仅用于此转换(作为 UDF)。 @MichaelBianconi

标签: python python-3.x apache-pig user-defined-functions


【解决方案1】:

过滤 ID,lastname 组合,然后将 id,lastname 区分为一个关系并将其与原始关系连接,然后最终生成所需的列。 假设数据被加载到关系 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's 然后是不同的。然后在连接后关系 E 看起来像

1234    Alex     Jones    1234    Jones
1234    Frank    na       1234    Jones
1234    Maria    na       1234    Jones

从上面你可以得到关系 A 的前两列和关系 D 的最后一列。最后 F 将有

1234    Alex    Jones
1234    Frank   Jones
1234    Maria   Jones

【讨论】:

  • 谢谢!我认为它会起作用。只是出于好奇,这种转换甚至可以写成在 Pig 中实现的 Python UDF 吗?
  • 是的,你可以写一个 Python UDF 来达到同样的效果。
猜你喜欢
  • 1970-01-01
  • 2022-08-23
  • 1970-01-01
  • 2016-03-13
  • 2021-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多