Apache pig 如何用拉丁语编写子查询?
我有两个数据文件: range.txtApache pig 如何用拉丁语编写子查询?,apache-pig,Apache Pig,我有两个数据文件: range.txt Min Max Name 1 10 a 11 20 b 21 30 c 31 100 d 101 200 e 1 3 40 150 和data.txt Min Max Name 1 10 a 11 20 b 21 30 c 31 100 d 101 200 e 1 3 40 150 我想要的结果是: 1 a ( because 1 <=
Min Max Name
1 10 a
11 20 b
21 30 c
31 100 d
101 200 e
1
3
40
150
和data.txt
Min Max Name
1 10 a
11 20 b
21 30 c
31 100 d
101 200 e
1
3
40
150
我想要的结果是:
1 a ( because 1 <= 1 <= 10 )
3 a ( because 1 <= 3 <= 10 )
40 d ( because 31 <= 40 <= 100 )
150 e ( because 101 <= 150 <= 200 )
1A(因为1一种非常简单的方法是从range.txt中扩充数据
范围=加载“range.txt”为(最小:长,最大:长,名称:chararray);
m=FOREACH范围生成展平(自定义项(最小值、最大值、名称));
数据=加载'data.txt'作为编号:long;
输出=按$0连接m,按数字连接数据;
转储输出;
输出键,从最小值到最大值的值对,键为数字,值为“name”。
所以110A应该是1A,2A,3A等等。
确保udf返回一个数据包,这样扁平化将为每行提供一个条目
虽然效率不高,但这可能是一个起点。一个非常简单的方法是从range.txt扩展数据
范围=加载“range.txt”为(最小:长,最大:长,名称:chararray);
m=FOREACH范围生成展平(自定义项(最小值、最大值、名称));
数据=加载'data.txt'作为编号:long;
输出=按$0连接m,按数字连接数据;
转储输出;
输出键,从最小值到最大值的值对,键为数字,值为“name”。
所以110A应该是1A,2A,3A等等。
确保udf返回一个数据包,这样扁平化将为每行提供一个条目
效率不高,但这可能是一个起点。这是另一种可能的解决方案:
myRepo = LOAD 'range.txt' USING PigStorage(',') AS (start:long,end:long,location:chararray);
myData = LOAD 'data.txt' AS (col1:long);
myRepoData = cross myRepo, myData;
myRepoData2 = filter myRepoData by col1 >= start and col1 <= end;
myRepoData3 = foreach myRepoData2 generate col1, location;
dump myRepoData3;
myRepo=LOAD'range.txt',使用PigStorage(',')作为(开始:长,结束:长,位置:chararray);
myData=LOAD'data.txt'为(col1:long);
myRepoData=跨myRepo,myData;
myRepoData2=按col1>过滤myRepoData=开始和col1这是另一种可能的解决方案:
myRepo = LOAD 'range.txt' USING PigStorage(',') AS (start:long,end:long,location:chararray);
myData = LOAD 'data.txt' AS (col1:long);
myRepoData = cross myRepo, myData;
myRepoData2 = filter myRepoData by col1 >= start and col1 <= end;
myRepoData3 = foreach myRepoData2 generate col1, location;
dump myRepoData3;
myRepo=LOAD'range.txt',使用PigStorage(',')作为(开始:长,结束:长,位置:chararray);
myData=LOAD'data.txt'为(col1:long);
myRepoData=跨myRepo,myData;
myRepoData2=按col1>过滤myRepoData=start和col1 range.txt中的key是[begin,end],而key in data.txt是col1,两个键之间的关系不是“相等连接”;而是一个键在另一个键的范围内,我不知道如何连接它们。range.txt中的key是[begin,end],data.txt中的键是col1,两个键之间的关系不是“相等联接”;而是一个键在另一个键的范围内,我不知道如何联接它们。