gpt4 book ai didi

hadoop - Apache Hadoop pig SPLIT 不工作。给出错误 1200

转载 作者:可可西里 更新时间:2023-11-01 16:31:18 26 4
gpt4 key购买 nike

包的结构:

emp = LOAD '...../emp.csv' using PigStorage(',') AS
(ename:chararray,id:int,job:chararray,sal:double)

这个包包含员工的详细信息。我想根据工作拆分数据。

Bag = split emp into mngr if job == 'MANAGER';

这不工作并给予 Error 1200.

如果我再添加一个条件,for ex.- sal10k if sal<10000 ,那么它正在工作。但为什么不只在一个 chararray 上?

我是 hadoop pig 的新手。了解一些基础知识。请帮忙。

最佳答案

请找到以下问题的解决方案以及有关 SPLIT 运算符的基本解释:

  1. SPLIT 运算符用于将一个关系分成两个新关系。所以你需要照顾这两个条件,比如 IF 和 ELSE:例如: IF(Something matches) then make Relation1, IF(NOT(something匹配)然后建立另一个关系。 (您在 Pig 中没有 else 关键字)。
  2. SPLIT 操作是一个独立的操作,这意味着您不能将 SPLIT 操作存储在一个关系中:

例子:bag = split emp into mngr if job == 'MANAGER';//这是错误的。

您不能用关系表示 SPLIT 操作。它将在 GRUNT shell 或脚本上独立执行,如下所示:

*SPLIT emp INTO managers IF(job MATCHES '.MANAGER.'),not_managers IF(NOT(job MATCHES '.MANAGER.'));*

这是一个示例数据集和输出供您引用:**

  • 数据集

**

Ron,1331,MANAGER,7232332.34
John,4332,ASSOCIATE,45534.6
Michell,4112,MANAGER,8342423.43
Tamp,1353,ASSOCIATE,34324.67
Ramo,2144,MODULE LEAD,845433.32
Shina,1389,MANAGER,8345321.78
Chin,4323,MODULE LEAD,455465.42

脚本:

emp = LOAD 'stackfile.txt' USING PigStorage(',') AS (ename:chararray,id:int,job:chararray,sal:double);

SPLIT emp INTO managers IF(job MATCHES '.*MANAGER.*'),not_managers IF(NOT(job MATCHES '.*MANAGER.*'));

DUMP managers;

输出:

(Ron,1331,MANAGER,7232332.34)
(Michell,4112,MANAGER,8342423.43)
(Shina,1389,MANAGER,8345321.78)

关于hadoop - Apache Hadoop pig SPLIT 不工作。给出错误 1200,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30434457/

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