Apache-pig-replace

提供:Dev Guides
移動先:案内検索

Apache Pig-REPLACE()

この関数は、特定の文字列内のすべての文字を新しい文字に置き換えるために使用されます。

構文

以下に、* REPLACE()*関数の構文を示します。 この関数は、次の3つのパラメーターを受け入れます。

  • string -置換される文字列。 リレーション内の文字列を置換する場合は、文字列が属する列名を渡す必要があります。
  • regEXP -ここでは、置換する文字列/正規表現を渡す必要があります。
  • newChar -ここでは、文字列の新しい値を渡す必要があります。
grunt> REPLACE(string, 'regExp', 'newChar');

次に示すように、 HDFS ディレクトリ /pig_data/emp.txt という名前のファイルがあると仮定します。 このファイルには、ID、名前、年齢、市などの従業員の詳細が含まれています。

*emp.txt*
001,Robin,22,newyork
002,BOB,23,Kolkata
003,Maya,23,Tokyo
004,Sara,25,London
005,David,23,Bhuwaneshwar
006,Maggy,22,Chennai
007,Robert,22,newyork
008,Syam,23,Kolkata
009,Mary,25,Tokyo
010,Saran,25,London
011,Stacy,25,Bhuwaneshwar
012,Kelly,22,Chennai

そして、以下に示すように、このファイルを emp_data という名前の関係でPigにロードしました。

grunt> emp_data = LOAD 'hdfs://localhost:9000/pig_data/emp1.txt' USING PigStorage(',')
   as (id:int, name:chararray, age:int, city:chararray);

以下は* REPLACE()関数の例です。 この例では、都市の名前 *Bhuwaneshwar を短い形式 Bhuw に置き換えています。

grunt> replace_data = FOREACH emp_data GENERATE (id,city),REPLACE(city,'Bhuwaneshwar','Bhuw');

上記のステートメントは、 emp_data 関係の city という名前の列の文字列 'Bhuwaneshwar' を 'Bhuw' に置き換え、結果を返します。 この結果は、 replace_data という名前のリレーションに保存されます。 以下に示すように、ダンプ演算子を使用してリレーション replace_data の内容を確認します。

grunt> Dump replace_data;

((1,newyork),newyork)
((2,Kolkata),Kolkata)
((3,Tokyo),Tokyo)
((4,London),London)
((5,Bhuwaneshwar),Bhuw)
((6,Chennai),Chennai)
((7,newyork),newyork)
((8,Kolkata),Kolkata)
((9,Tokyo),Tokyo)
((10,London),London)
((11,Bhuwaneshwar),Bhuw)
((12,Chennai),Chennai)