2

EqualsIgnoreCase 関数 - 例外: org.apache.pig.backend.executionengine.ExecException

入力:

 a.csv
 -------
  a
  A
 (blank/empty line)
  b
  B
  c
  C

目的 : 'a'、'A'、'b'、'B' のレコードを選択する。

アプローチ 1 :

    A = LOAD 'a.csv' using PigStorage(',') AS (value:chararray);
    B = FILTER A BY LOWER(value) IN ('a','b');
    DUMP B;

    Output :
     (a)
     (A)
     (b)
     (B)

アプローチ 2 :

    C = FILTER A BY EqualsIgnoreCase(value, 'a') or  EqualsIgnoreCase(value, 'b');

    Output :
     2015-04-27 23:48:21,958 [Thread-30] WARN   org.apache.hadoop.mapred.LocalJobRunner - job_local_0014
        org.apache.pig.backend.executionengine.ExecException
        at org.apache.pig.builtin.EqualsIgnoreCase.exec(EqualsIgnoreCase.java:50)

この例外がスローされる理由を理解しようとしています。空白のレコードが原因であることは理解しています。

値が null または空でないことを確認しようとしましたが、それでも同じエラーです。

  D = FILTER A BY (value IS NOT NULL) OR (TRIM(value) != '') AND (EqualsIgnoreCase(value, 'a') or  EqualsIgnoreCase(value, 'b'));

アプローチ 2を使用して目的を達成するための情報や考えをいただければ幸いです。

4

1 に答える 1