0

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

(docID STRING, tag STRING)

例如:


docID,标签

  • 1、狗
  • 1、猫
  • 1、马
  • 2、狗
  • 2、猫
  • 2、骨

我正在寻找一个 Hive 查询,它可以计算每对的所有标签共现。

输出应该是:

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

对于上面的例子:


标签A,标签B,共现

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

有没有人可以实现这一目标的 Hive 查询?

4

1 回答 1

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,例如 (horse, bone, 0) 不会在输出中

于 2013-01-21T18:30:30.587 回答