Я получил это с помощью следующих шагов.
a.) Во-первых, команда Police_force from filter должна быть заключена в одинарные кавычки, как показано ниже. location = FILTER известные значения BY (падение в спичках '$ Police_force' );
b.) Во-вторых, нам необходимо включить экранирующий символ () , а также вдоль с одинарными или двойными кавычками в команде выполнения.
pig -x local -param knownvalues='/home/ec2-user/data' -param police_force="Surrey\ Police" /home/ec2-user/test.pig
or
pig -x local -param knownvalues='/home/ec2-user/data' -param police_force='Surrey\ Police' /home/ec2-user/test.pig
Ниже приведены мой код тестирования и команды.
Свинья Входной файл данных: данные кошки
mary,19
john,18
joe,18
Surrey Police,20
Код образца свиньи: cat test.pig
knownvalues = LOAD '$knownvalues' USING PigStorage(',') AS (name:chararray,age:int);
dump knownvalues;
describe knownvalues;
location = FILTER knownvalues BY (name MATCHES '$police_force');
dump location;
describe location;
Выход:
После загрузки :
(mary,19)
(john,18)
(joe,18)
(Surrey Police,20)
knownvalues: {name: chararray,age: int}
После фильтра:
(Surrey Police,20)
location: {name: chararray,age: int}