Apache pig 传递带有空白的参数

Apache pig 传递带有空白的参数,apache-pig,Apache Pig,当我使用下面显示的命令运行脚本时,police\u force参数设置为“Surrey police”,它会给我一个错误 "ERROR org.apache.pig.tools.grunt.Grunt - ERROR 1000: Error during parsing. File not found: Police"" 如果我将值传递为“Surrey_Police”,它运行正常,但不返回任何内容 -- knownvalues: dataset presented -- date1: one

当我使用下面显示的命令运行脚本时,
police\u force
参数设置为
“Surrey police”
,它会给我一个错误

"ERROR org.apache.pig.tools.grunt.Grunt - ERROR 1000: Error during parsing. File not found: Police"" 
如果我将值传递为“Surrey_Police”,它运行正常,但不返回任何内容

-- knownvalues: dataset presented
-- date1: one date of comparison
-- date2: 2nd date of comparison
-- police_force: falls within 
-- crime_type
-- Usage: exec -param knownvalues='/user/cw/input/all.txt' -param date1='2017-05' -param date2='2017-06' -param police_force="Surrey Police" /home/xiaorui/CW/compare_crime.pig


knownvalues = LOAD '$knownvalues' USING PigStorage(',') AS (crimeid:chararray,month:chararray,reportedby:chararray,fallswithin:chararray,longitude:float,latitude:float,location:chararray,lsoacode:chararray,lsoaname:chararray,crimetype:chararray,lastoutcome:chararray,context:chararray);


knownvalues = SAMPLE knownvalues 0.00001;

location = FILTER knownvalues BY (fallswithin MATCHES $police_force);

first_date = FILTER location BY (month MATCHES '$date1');

second_date = FILTER location BY (month MATCHES '$date2');

DUMP first_date;

如果我使用下面的行,代码将按预期工作

location = FILTER knownvalues BY (fallswithin MATCHES 'Surrey Police');

我通过以下步骤实现了它

a、 )首先,过滤指挥部的警察部队应该用如下单引号括起来。 位置=过滤已知值(与“$police\u 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
下面是我的测试代码和命令

清管器输入数据文件:cat数据

mary,19
john,18
joe,18
Surrey Police,20
清管器样本代码:cat测试。清管器

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}
加载后:

(mary,19)
(john,18)
(joe,18)
(Surrey Police,20)
knownvalues: {name: chararray,age: int}
(Surrey Police,20)
location: {name: chararray,age: int}
筛选后:

(mary,19)
(john,18)
(joe,18)
(Surrey Police,20)
knownvalues: {name: chararray,age: int}
(Surrey Police,20)
location: {name: chararray,age: int}

用单引号括起来时会发生什么?或者使用转义字符来转义空间?@franklinsijo我不确定我是否理解使用转义字符的意思?单引号不会改变任何东西
-param police_force=“Surrey\police”
仍然会显示“错误1000:解析过程中出错。未找到文件:police”“@franklinsijoPig 0.16.0@franklinsijo