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これは私がここでやりたいことではありません。