有人能解释pig中的这个奇怪错误吗

jv4diomz  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(424)

我在pig中使用宏,但是它抛出了一个错误:未定义的别名'result\u 1'。
我使用的宏:

  1. define macro_result (source , metric_name , metric_value) returns result_metric
  2. {
  3. result_1= foreach $source generate
  4. timestamp,
  5. member_sk as id,
  6. '$metric_name' as minor_metric,
  7. 'Lts_seo' as major_metric,
  8. $metric_value as value;
  9. $result_metric = result_1;
  10. };

我将宏称为:

  1. page_views_to_jserp_from_job_detail = macro_result(metadata_final,'PAGE_VIEWS_TO_JSERP_FROM_JOB_DETAIL', PV_to_jserp_from_job_detail );

我将宏更改为此,错误似乎已解决(更改为粗体):

  1. define macro_result (source , metric_name , metric_value) returns result_metric
  2. {
  3. ***$result_metric***= foreach $source generate
  4. timestamp,
  5. member_sk as id,
  6. '$metric_name' as minor_metric,
  7. 'Lts_seo' as major_metric,
  8. $metric_value as value;
  9. ***-- $result_metric = result_1;***
  10. };

最初是什么导致了错误?为什么我不能使用result\u 1作为中间步骤并将其存储在宏中的result\u metric中?

busg9geu

busg9geu1#

我们不能将一个别名直接分配给另一个别名。
我们可以从一个别名投影所需的字段并返回相同的字段。
对于共享的用例:

  1. $result_metric = FOREACH result_1 GENERATE *;

除非这两个别名之间的投影字段发生更改,否则不需要执行此步骤。

相关问题