1

pig を使用してテキストを小文字の単語に分割し、マップ内の各単語を検索しようとしています。map.txt にあるサンプル マップを次に示します (長さは 1 行のみです)。

[this#1.9,is#2.5my#3.3,vocabulary#4.1]

私はこれを次のようにロードします:

M = LOAD 'mapping.txt' USING PigStorage AS (mp: map[float]);

これは問題なく動作します。次に、次のようにしてテキストを読み込み、小文字の単語に分割します。

LINES = LOAD 'test.txt' USING TextLoader() AS (line:chararray);
TOKENS = FOREACH LINES GENERATE FLATTEN(TOKENIZE(LOWER(line))) as (word:chararray);

今、私はこのようなことをしたいと思います:

RESULTS = FOREACH TOKENS GENERATE M.mp#word;

「これは私の語彙です」のような行がある場合、次の出力が得られます: 1 3 3 4 ですが、さまざまなエラーが発生し続けます。マップ内の変数値を調べるにはどうすればよいですか?

How can I use the map datatype in Apache Pig? を見てきました。およびhttp://pig.apache.org/docs/r0.10.0/basic.html#map-schema 、ただし、これらはマップで固定値を検索している場合にのみ役立ちます。たとえば、 M.mp#'thisこれは私がここでやりたいことではありません。

4

1 に答える 1

0

M を FLATTEN してから、トークン/単語に基づいて M と LINES を結合することもできます (M で「複製された」結合を実行できるため、各マッパーにコピーされます)。

于 2013-03-13T10:58:35.583 に答える