在Hive中计算标记共现

时间:2013-01-21 14:55:00

标签: hadoop hive

我是一个Hive新手,想要计算标记共现。我在Hive中有一个表,其中包含每个文档中存在的所有标记:

(docID STRING, tag STRING)

例如:


docID,标记

  • 1,狗
  • 1,猫
  • 1,马
  • 2,狗
  • 2,猫
  • 2,骨

我正在寻找可以计算每对的所有标记共现的Hive查询。

输出应为:

(tagA STRING, tagB STRING, co-occurrence INT)

对于上面的例子:


tagA,tagB,共现

  • 狗,猫,2
  • 狗,马,1
  • 狗,骨头,1
  • 猫,狗,2
  • cat,horse,1
  • cat,bone,1

Hive查询是否会实现此目的?

1 个答案:

答案 0 :(得分:1)

SELECT A.tag, B.tag, COUNT(*)
FROM tags A JOIN tags B
ON A.docId = B.docId
GROUP BY A.tag, B.tag;

注意:这不包括0,例如(马,骨头,0)不会出现在输出中