3

フィルター条件をコマンドラインパラメーターとして使用する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のサブプロセスモジュールから直接コマンドを実行して、シェルが何か変なことをしていないことを確認しました。

4

1 に答える 1

2

どのバージョンの Pig を使用していますか? 私は 0.9.2 を使用しており、次のコマンドが機能します。

 pig -p "F='field1 == 3 AND field2 == 5'" test.pig

しかし、0.8.1 では動作しません。

于 2012-09-20T16:00:36.560 に答える