我正在尝试使用pig将文本分解为小写单词,然后在Map中查找每个单词。下面是我的示例Map,我在map.txt中有它(它只有一行长):
[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;
因此,如果我有一行像“this my词汇表”,我会得到以下输出:1 3 3 4,但我不断得到各种错误。如何在Map中查找变量值?
我已经研究了如何在apache pig中使用map数据类型?以及http://pig.apache.org/docs/r0.10.0/basic.html#map-schema,但这些只有在Map中查找固定值时才有用,例如m.mp#'this',这不是我在这里要做的。
1条答案
按热度按时间4smxwvx51#
您还可以展平m,然后基于标记/字连接m和行(您可以对m执行“复制”连接,这样它将成为每个Map器的副本)