我想编写一个将过滤条件作为命令行参数的pig脚本。从命令行我想输入类似:
pig -p "MY_FILTER=field1 == 0 and field2 == 5" myscript.pig
在我的剧本中,我有一句话:
my_filtered_data = filter my_data by $MY_FILTER;
当MY_FILTER
没有空格和我在我的值周围传递引号时,这可以正常工作;因此,如果我在命令行输入MY_FILTER=\"field1==0\"
,shell将使用值传递引号,并且pig执行我想要的扩展。但是,如果我提供MY_FILTER=\"field1 == 0\"
我尝试了一些不同的引用技术,甚至尝试直接从python的子进程模块运行命令,以确保我的shell没有做一些奇怪的事情。
答案 0 :(得分:2)
您使用的是哪个版本的猪?我使用0.9.2,以下命令对我有用:
pig -p "F='field1 == 3 AND field2 == 5'" test.pig
但它不适用于0.8.1。