フィルター条件をコマンドラインパラメーターとして使用する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\"
、コマンドラインで入力すると、シェルは値を含む引用符を渡し、pigは必要な拡張を実行します。ただし、次のように指定すると、パラメータは拡張できません。MY_FILTER=\"field1 == 0\"
私はさまざまな引用手法を試し、Pythonのサブプロセスモジュールから直接コマンドを実行して、シェルが何か変なことをしていないことを確認しました。