跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 请教大家一个业务场景问题,关于笛卡尔积
未分類
30 9 月 2020

请教大家一个业务场景问题,关于笛卡尔积

请教大家一个业务场景问题,关于笛卡尔积

資深大佬 : qqq8724 0

场景是有一个字符串的集合,集合中元素是类似”id!时间 1,数据项 1&时间 2,数据项 2&时间 3,数据项 3……”的字符串,id 后面的以’&’分割的内容数量不一定,数据项一共有 5 个值。

现要求集合中两两元素之间的相似度,数据量大概是 50W 。

算法是只要两个 id 数据项相同,时间在给定阈值内就算相似,按一定规则给一个相似分。等两个 id 的所有时间和数据项比对完毕,把这些相似分加一块,就是这两个 id 的相似度。

最后结果格式为”id1,id2,相似度”

现在用 spark 的 cartesian 算子算笛卡尔积,很慢,而且最后没跑出来。

不知各位有什么好的办法,在此先谢过。

大佬有話說 (8)

  • 資深大佬 : zxCoder

    以’&’分割的内容数量不一定,数据项一共有 5 个值

    没看懂

  • 資深大佬 : chocovon

    不懂笛卡尔积在这里的作用……这个相似度直接用欧式距离表示也行吧?

  • 主 資深大佬 : qqq8724

    @chocovon 笛卡尔积是为了两两比对 算相似度 你说的欧式距离没怎么了解过 愿闻其详

  • 資深大佬 : chocovon

    @qqq8724 就是算向量内积,把各项数据差值的平方相加后开根号

  • 資深大佬 : volvo007

    感觉就是一个 自连接的 out join 之后,对每个组合计算相似度就好了……

  • 資深大佬 : lidlesseye11

    不懂 spark,随便说下简单粗暴的思路抛个砖。。

    把数据遍历一遍,整成 Map<数据项,ChronologicalSortedList<Time_Id_Object>> 这样的,然后遍历 Map 就行了
    当然这样会加载所有数据占不少内存。。内存不够的话就多遍历几遍,一次只处理一个数据项。。

  • 主 資深大佬 : qqq8724

    @volvo007 对 大体是这个意思

  • 主 資深大佬 : qqq8724

    @lidlesseye11 单是数据可以放到内存中,但是当数据自身去匹配的时候,数据会膨胀到很大

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具