gpt4 book ai didi

hadoop - 我想用 PIG 中的 AVG 替换 NULL 值

转载 作者:可可西里 更新时间:2023-11-01 14:48:44 24 4
gpt4 key购买 nike

这是我的代码:

    claims = LOAD 'Darshan/automobile_insurance_claims.csv' USING  PigStorage(',') AS (claim_id:chararray, policy_master_id:chararray, registration_no:chararray, engine_no:chararray, chassis_no:chararray, customer_id:int, Col6:int,first_name:chararray, last_name:chararray,street:chararray,address:chararray,    city:chararray, zip:long,gender:chararray, claim_date:chararray, garage_city:chararray, bill_no:long, claim_amount:double, garage_name:chararray,claim_status:chararray);  

grp_all = group claims all;

avg = foreach grp_all generate AVG(claims.Col6);
grp = group claims by claim_id;

m = foreach grp generate group, ((Col6 IS NULL) ? avg : Col6);

结果: dump avg; #33.45

-------------------------------------------- ---------------------------------------------- ----------------------------------替换 Col6 中的 NULL 值时显示以下错误(即年龄): 原因:
标量投影无效:avg:需要从关系投影列才能用作 s卡拉
在 org.apache.pig.parser.LogicalPlanGenerator.var_expr(LogicalPlanGenerator.java:10947)
在 org.apache.pig.parser.LogicalPlanGenerator.expr(LogicalPlanGenerator.java:10164)
在 org.apache.pig.parser.LogicalPlanGenerator.bin_expr(LogicalPlanGenerator.java:11992)
在 org.apache.pig.parser.LogicalPlanGenerator.projectable_expr(LogicalPlanGenerator.java:11104)
在 org.apache.pig.parser.LogicalPlanGenerator.var_expr(LogicalPlanGenerator.java:10815)
在 org.apache.pig.parser.LogicalPlanGenerator.expr(LogicalPlanGenerator.java:10164)
在 org.apache.pig.parser.LogicalPlanGenerator.flatten_generated_item(LogicalPlanGenerator.java:7493)
在 org.apache.pig.parser.LogicalPlanGenerator.generate_clause(LogicalPlanGenerator.java:17595)
在 org.apache.pig.parser.LogicalPlanGenerator.foreach_plan(LogicalPlanGenerator.java:15987)
在 org.apache.pig.parser.LogicalPlanGenerator.foreach_clause(LogicalPlanGenerator.java:15854)
在 org.apache.pig.parser.LogicalPlanGenerator.op_clause(LogicalPlanGenerator.java:1933)
在 org.apache.pig.parser.LogicalPlanGenerator.general_statement(LogicalPlanGenerator.java:1102)
在 org.apache.pig.parser.LogicalPlanGenerator.statement(LogicalPlanGenerator.java:560)
在 org.apache.pig.parser.LogicalPlanGenerator.query(LogicalPlanGenerator.java:421)
在 org.apache.pig.parser.QueryParserDriver.parse(QueryParserDriver.java:188)
... 还有 17 个
2016-08-08 05:51:07,297 [main] 错误 org.apache.pig.tools.grunt.Grunt - 错误 1200:Pig 脚本解析失败:
标量投影无效:avg:需要从关系投影列才能用作 s卡拉。

第 11 行是:m = foreach grp generate group, ((Col6 IS NULL) ? avg : Col6);

最佳答案

Darshan,这看起来不像是您正在尝试的逻辑问题。您可以将 NULLs 替换为 AVG 但这里的问题是列的投影

要解决这个问题,请再次访问您的代码,您可能会发现 AVG 处于不同的关系中,并且您正在从不同的关系中访问它。

在你的代码中,“avg”是一个关系而不是一个列,如果我理解正确,在你生成 AVG 的第一个组语句之后,也生成其他列,这就是您将拥有相同关系的 avgcol6

  1. 加载您的数据
  2. 根据需要对数据进行分组
  3. 计算 AVG 并生成其他列

如果您愿意,可以在同一个 FOREACH 中应用此替换逻辑。

如果您仍然遇到任何问题,请告诉我。

关于hadoop - 我想用 PIG 中的 AVG 替换 NULL 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38822204/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com