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 ,但我不断收到各种错误。如何在地图中查找变量值?

我看过如何在 Apache Pig 中使用地图数据类型?http://pig.apache.org/docs/r0.10.0/basic.html#map-schema,但这些仅在我在地图中查找固定值时才有帮助,例如 M.mp#'this ',这不是我想在这里做的。

4

1 回答 1

0

您还可以 FLATTEN M 然后根据 Token/word JOIN M 和 LINES(您可以在 M 上进行“复制”连接,以便将其复制到每个映射器

于 2013-03-13T10:58:35.583 回答