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

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

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

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

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

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

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

补充:数据项包括五种值(a,b,c,d,e)

将(时间+数据项)作为一个组合的话,整体是 id + 多个组合

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

没看懂

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

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

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

分布式雪花算法,同一毫秒内生成的 id 是无序的吧?

jerrry:第一段时间戳相同; 但是第二段 workerId 可能不同。 所以可能会造成同一毫秒内的请求生成的 id 是无序的吧。xuanbg:时间戳相同也有多个递增 id 的

@一个未来可能会存在的 id 会怎么样?

crella:终于还是控制不了自己的感情,在这个不能删帖的网站也想说。她应该是个算法工程师。如果提前 @一个新注册的 id 可以提前给她留言,我想这样给她留言。不知道她什么时候会来或者会走。可是如果很多人都这样提前给某些人留言,我感觉好像给这个比较纯洁的地方带来不少隐隐的恶意。我这个 id 应该社会性死亡好久了。真希望她能在追寻计算机技术的路上自信而愉快地走…

领导是甲方,和领导&甲方吵架有什么后果

sonyxperia:活该吧 Joseph0717:@sonyxperia 该吵就得吵 ericwood067:甲方和领导还是有区别的吧?要巧妙的怼甲方,不能硬怼。很多甲方的基层员工也是狐假虎威,只要你找对方法,他们也不敢给你提过分的或者不切实际的要求。

微服务调用别人接口拼数据需要建立冗余表?将此表 id 和其他字段同步到此表?

Cowhitewhite:第一次听说,还这样玩?有点疑惑,新的带头大哥说要这样玩。wysnylc:看业务 coderxy:我们业务与管理分离的时候做过这种, 把业务的表同步一份到管理平台,然后自己加上自己需要的字段。 不过不太好,经常出现数据同步的问题,而且也很麻烦。 Cowhitewhite:@coderxy 我也觉得没必要这样 但是这样合理吗 Cowhi…

在线场景下,对于大量 ID 进行筛选过滤的最佳技术方案是什么?

Morriaty:具体场景是,每个用户有个推荐列表,推荐列表是千级别的物品 ID,但物品是高频度变更的,下架、失效、用户屏蔽等等,所以希望是近实时在线的去判断这几千个 ID 的状态。 目前有尝试使用 elasticsearch 进行实时的请求,但实际发现在峰值请求下,每次 request 都是千级别的 ID 过滤,es 还是扛不住,查了下 Google,es…