创建名称选项卡:
CREATE TABLE name_tab (country string,
new_item ARRAY<STRUCT<ngram:array<string>,
estfrequency:double>>);
插入语句:
INSERT OVERWRITE TABLE name_tab
SELECT country, ngrams(sentences(var2),3,100) as word_map
FROM bdd
GROUP BY country;
创建名称\u选项卡\u新建:
CREATE TABLE name_tab_new (country string, ngram1 string, ngram2 string, ngram3 string, estfrequency double);
插入语句:
INSERT OVERWRITE TABLE name_tab_new
SELECT country , X.ngram[0], X.ngram[1], X.ngram[2], X.estfrequency
FROM name_tab
LATERAL VIEW explode(new_item) Z as X;
这些请求在Hive中起作用。它按国家创建ngram。问题是:对于一个国家来说,这个ngram是有区别的 {aa, bb, cc}
还有这个ngram {bb, aa, cc}
.
我想要一个文字顺序无关紧要的解决方案。对于一个国家,我不想有任何差别é之间的关系 {aa, bb, cc}
以及 {bb, aa, cc}
. 我只想要一个。
非常感谢你
结果示例:
- 英格兰,面包,三明治,果汁,120
英格兰,table,椅子,工具,54
英格兰,三明治,面包,果汁,32
意大利,海洋,罗马,科利塞,47*
实际上,我想要:
- 英格兰,面包,三明治,果汁,152
英格兰,table,椅子,工具,54
意大利,海洋,罗马,科利塞,47*
我希望ngrams函数中有一个不考虑订单的选项。
在表bdd中,变量“var2”是由几个单词组成的列表,用blank分隔。
在“表名”选项卡中,我们有:
英国一线,{“ngram”:[“面包”,“三明治”,“果汁”],“estfrequency”:120.0},{“ngram”:[“table”,“椅子”,“工具”],“estfrequency”:54.0},{“ngram”:[“三明治”,“面包”,“果汁”],“estfrequency”:32.0}
第二行意大利,{“ngram”:[“sea”,“roma”,“coliseo”],“estfrequency”:47.0}
1条答案
按热度按时间7uhlpewt1#
演示