Apache pig ApachePigJoin返回空关系

Apache pig ApachePigJoin返回空关系,apache-pig,Apache Pig,当所有这些字段的数据类型都是字符时 cust_filtered包括以下条目——我存储了此关系,这些条目都在该文件中: cust_joined = JOIN cust_filtered BY (LOW, HIGH, NORMAL), cust_conversion BY (Low, High, Normal); cust_id Val1 Val2 Year Low High Normal Prod-code 1925635222

当所有这些字段的数据类型都是字符时

cust_filtered包括以下条目——我存储了此关系,这些条目都在该文件中:

cust_joined = JOIN cust_filtered BY (LOW, HIGH, NORMAL), cust_conversion BY (Low, High, Normal);
cust_id           Val1      Val2     Year      Low  High  Normal  Prod-code
1925635222        16.2      61.2     2013      null null  <=6.9   1234548-5
9253821456        16.8      65.8     2014      null null  <7.0    4548567-9
cust_id Val1 Val2年低高正常产品代码

1925635222 16.2 61.2 2013空空空我不知道为什么它不适合你,它适合我。你能粘贴你的猪脚本吗

Low     High   Normal     Cust-Session     Price
null    null    <=6.9      ABC-1234        16.9
null    null    <=7.0      PQR-4567        87.0
cust_filtered=使用PigStorage(“”)加载'cust_filtered.txt'(客户id:long,Val1:float,Val2:float,年份:chararray,低:chararray,高:chararray,正常:chararray,产品代码:chararray);
cust_conversion=使用PigStorage(“”)加载“cust_conversion.txt”(低:字符,高:字符,正常:字符,cust_会话:字符,价格:浮动);
cust_JOINTED=按(低、高、正常)过滤的加入cust_,按(低、高、正常)转换的加入cust_;
已加入的转储客户;
输出:

(1925635222,16.2,61.22013,null,null,我假设您的数据中有null,您有实际的pig值
null
,对吗

如果是这样,那么这就是原因,因为清管器内部联接忽略空键:

cust_filtered = LOAD 'cust_filtered.txt' USING PigStorage(' ') AS(cust_id:long,Val1:float,Val2:float,Year:chararray, LOW:chararray, HIGH:chararray, NORMAL:chararray, Prod_code:chararray);
cust_conversion = LOAD 'cust_conversion.txt' USING PigStorage(' ') AS (Low:chararray, High:chararray, Normal:chararray, Cust_Session:chararray, Price:float);
cust_joined = JOIN cust_filtered BY (LOW, HIGH, NORMAL), cust_conversion BY (Low, High, Normal);
DUMP cust_joined;

OUTPUT:
(1925635222,16.2,61.2,2013,null,null,<=6.9,1234548-5,null,null,<=6.9,ABC-1234,16.9)

如果这些是带有
“null”
作为值的字符,那么这应该基本上有效,如另一个答案中所述

The JOIN operator always performs an inner join. Inner joins ignore null keys, so it makes sense to filter them out before the join.