我正在尝试使用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# '这',这不是我想要做的。
答案 0 :(得分:0)
你也可以FLATTEN M然后基于令牌/单词加入M和LINES(你可以在M上进行'复制'连接,这样就可以复制到每个映射器