int的成员这是相对于确定是否从在一个关系的元组int值是从猪拉丁另一关系的柱的部件值。我是Pig Latin的新手,发现很难将我的思想包围在框架中。确定在一个单独的关系
目前我有两个表,一个包含ID的对标签列表与值的小区域,另一个含有一个ID和标签ID参照其他表的元组。
这里的orders.csv:
id, tag
1597, x
999, y
787, a
812, x
而且tags.csv:
id, tag_id
11, 55
99, 812
22, 787
我需要锻炼的方法,如果在订单表中的所有元组的TAG_ID是的一员标签表的ID的子集。
id, has_x
111, 0
99, 1
22, 0
这是我到目前为止有:
register 's3://bucket/jython_task.py' using jython as task;
tags = load 's3://bucket/tags.csv' USING PigStorage(',') AS (id: long, tag: chararray);
orders = load 's3://bucket/orders.csv' USING PigStorage(',') AS (id: long, tag_id: long);
tags = filter tags by tag == 'x';
x_cases = foreach tags generate tag;
tagged_orders = foreach orders generate id, tag_id, tasks.check_membership(tag_id, x_cases.tag) as is_x:int;
和UDF:
def check_membership(instance, value_list):
if instance != None:
for value in value_list:
if instance == value[0]:
return 1
return 0
我得到的错误:
2012-09-20 23:53:45,377 [main] ERROR org.apache.pig.tools.pigstats.SimplePigStats - ERROR 2997: Unable to recreate exception from backed error: org.apache.pig.backend.executionengine.ExecException: ERROR 0: Scalar has more than one row in the output. 1st : (7995), 2nd :(8028)
我在做什么错?有没有更好的方法来做我想要做的事情?
将示例输入和预期输出添加到您的问题将有助于更快地获得答案。 –