1

私は Pig を初めて使用し、ワード カウント プログラムを作成しようとしています。

テキストから単語を取得する 1 つの方法は、次のTOKENIZE関数を使用することです。

WORDS = foreach INPUT generate flatten(TOKENIZE(text)) AS word;

しかし、私は空白でのみ分割したいのですが、TOKENIZEカンマなどでも分割します。どうすればいいですか?を使ってみSTRSPLIT(text, ' ')STRSPLITのですが、タプルをTOKENIZE返しているのにバッグを返しているようで、使い方がわかりませんSTRSPLIT

4

2 に答える 2

2

入力データがどのように見えるかによって異なりますが、次のようにすることができます。

  1. MyRegExLoader (PiggyBank 内) を正規表現と共に使用して、データをロードします。
  2. STREAMを Perl、sed、またはお気に入りのスクリプト言語で使用して、入力データを TOKENIZE が希望する方法で処理する形式に変換します。

また、ToBag を使用してタプルをバッグに変換することもできます ( PiggyBankにもあります)。

于 2012-04-05T07:33:07.830 に答える
1

実際には、タプルをバッグに直接変換することはできません(その逆も同様です)。私はあなたにこれをすることを提案します:

  1. データをロードする
  2. STRSPLITを使用して、値をタプルに分割します
  3. タプルをUDFでバッグに変換します
  4. バッグを平らにする
于 2012-04-04T14:15:09.093 に答える