Hadoop Pig中基于ID的过滤器组

Hadoop Pig中基于ID的过滤器组,hadoop,apache-pig,Hadoop,Apache Pig,我试图根据第一个模式中的ID从模式中过滤出一组描述 我对猪很陌生,所以很难掌握这个窍门 以下是我构建的代码,但它不起作用: changeReason = LOAD 'Change_Reason.txt' USING org.apache.pig.piggybank.storage.CSVExcelStorage('|', 'NO_MULTILINE', 'UNIX', 'SKIP_INPUT_HEADER') AS (changeReasonID:int, reasonName:char

我试图根据第一个模式中的ID从模式中过滤出一组描述

我对猪很陌生,所以很难掌握这个窍门

以下是我构建的代码,但它不起作用:

changeReason = LOAD 'Change_Reason.txt' USING org.apache.pig.piggybank.storage.CSVExcelStorage('|', 'NO_MULTILINE', 'UNIX', 'SKIP_INPUT_HEADER')
    AS (changeReasonID:int, reasonName:chararray);
price = LOAD '$directory/Price.txt' USING org.apache.pig.piggybank.storage.CSVExcelStorage('|', 'NO_MULTILINE', 'UNIX', 'SKIP_INPUT_HEADER')
    AS (priceID:int, changeReasonID:int);

priceChangeReasonIDs = GROUP price BY changeReasonID;
subGroup = FOREACH priceChangeReasonIDs
{
    change = FILTER changeReason BY changeReasonID == group.changeReasonId;
    GENERATE group AS changeID, change.reasonName AS Reason;
};
该代码给出了以下错误:

Failed to parse: Pig script failed to parse: 
<file load_historical_price.pig, line 108, column 20> expression is not a project expression: (Name: ScalarExpression) Type: null Uid: null)

希望此工作示例有助于:

如果我理解的话,您希望通过group元素上的筛选多组数据

下面是我的示例脚本:

data = LOAD 'SO/data.txt' USING PigStorage(' ') AS (val:int, id1:chararray, id2:int);
DESCRIBE data;
dgroup = GROUP data BY (id1, id2);
DESCRIBE dgroup;
dfilter = FILTER dgroup BY group.id1 == 'B';
DESCRIBE dfilter;
DUMP dfilter;
这将按id1过滤分组的id1、id2数据

输入示例:

12 A 1
22 A 2
32 B 1
33 B 2
43 B 1
55 A 2
77 B 2
88 A 1 
以及转储的结果:

((B,1),{(43,B,1),(32,B,1)})
((B,2),{(77,B,2),(33,B,2)})

这就是你想做的吗?

Plz。添加用例的输入和预期输出,并提供transformedRaw,您根据PriceChangeReasonIdSorry进行分组的内容。我获取了专有信息,transformedRaw应该是price。现在就换吧。今天晚些时候,当我面前有文件时,我将在这里获取输入和输出。price没有PriceChangeReasonId字段已修复,我的搜索和替换技能昨晚在从我们正在使用的库中提取任何识别数据时失败了。