单词包的配置单元(字典中每个单词的字数)

fruv7luv  于 2021-06-02  发布在  Hadoop
关注(0)|答案(2)|浏览(356)

我有一张这样结构的table:

user_id | message_id | content
   1    |      1     | "I like cats"
   1    |      1     | "I like dogs"

和一个有效单词的列表 dictionary.txt (或外部配置单元表),例如:

I,like,dogs,cats,lemurs

我的目标是为每个用户生成一个单词计数表

user_id  |  "I"  |  "like"  |  "dogs"  |  "cats"  |  "lemurs"
   1     |   2   |     2    |     1    |     1    |     0

这就是我目前所尝试的:

SELECT user_id, word, COUNT(*) 
FROM messages LATERAL VIEW explode(split(content, ' ')) lTable as word 
GROUP BY user_id,word;
jvidinwx

jvidinwx1#

检查此项:

select ename, 
length(ename)-length(replace(ename,'A', '')) A,
length(ename)-length(replace(ename,'W', '')) W 
FROM EMP;

否则,您可以定义一个变量(搜索字符串)并将其放置在“a”、“w”等位置

wwtsj6pe

wwtsj6pe2#

我不太熟悉在Hive上做枢轴,但在Pig身上可以做到。

DEFINE GET_WORDCOUNTS com.stackoverflow.pig.GetWordCounts('$dictionary_path');

A = LOAD .... AS user_id, message_id, content; 

C = GROUP B BY (user_id);

D = FOREACH C GENERATE group, FLATTEN(GET_WORDCOUNTS(B.content));

你将不得不写一个简单的自定义项 GetWordCounts 它标记每个分组记录的输入内容,并使用输入字典进行检查。

相关问题