У меня есть два файла данных:
range.txt
Min Max Name
1 10 a
11 20 b
21 30 c
31 100 d
101 200 e
и data.txt
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 )
Как мне написать скрипт Свиньи?
Я пытался:
MyREPO = LOAD '/repos/range.txt' USING PigStorage(',') AS (start:long,end:long,location:chararray);
MyDATA = LOAD '/repos/data.txt' AS (col1:long);
B = FOREACH MyDATA {
C = FILTER MyREPO BY ( MyDATA.col1 >= start AND MyDATA.col1 <= end );
GENERATE MyDATA.col1,C.location;
}
STORE C into '/result/' USING PigStorage();
вышеприведенный скрипт не компилируется с pig.
но это показывает, что я хочу сделать.
спасибо.
Может быть, таким путем пройти?
сделать начало и конец в range.txt объединенной строкой,
сделать col1 в data.txt одной строкой,
Я пишу пользовательский ComparisonFunc, в этой функции,
разбить строку на начало и конец и проверить, находится ли col1 в этом диапазоне?
НО КАК?
это мой второй день на PIG ......