java.lang.IllegalArgumentException: requirement failed: Found duplicate indices: 766.

问题描述:

spark python中使用 CoordinateMatrix的时候出现

java.lang.IllegalArgumentException: requirement failed: Found duplicate indices: 766.
在这里插入图片描述

原因分析:

在矩阵的输入文件中,存在重复的值,这是由于原数据hash冲突引起的,哈希冲突存在是正常的。

解决方案:

去除重复元素
使用如下方法
https://www.cnblogs.com/yunlongaimeng/p/8728647.html

# 去重成功
>>>li3 = [(0, 0, 1.2), (1, 0, 2.1), (2, 1, 3.7), (0, 0, 1.2), (0, 0, 1.2)]
>>>{}.fromkeys(li3).keys() 
>>>[(1, 0, 2.1), (2, 1, 3.7), (0, 0, 1.2)]

⚠️注意,使用MatrixEntry(0, 0, 1.2)无法去重!
例子:

>>> li5 = [MatrixEntry(0, 0, 1.2), MatrixEntry(0, 0, 1.2), MatrixEntry(1, 0, 2.1), MatrixEntry(2, 1, 3.7)]
>>> li5
[MatrixEntry(0, 0, 1.2), MatrixEntry(0, 0, 1.2), MatrixEntry(1, 0, 2.1), MatrixEntry(2, 1, 3.7)]
>>> {}.fromkeys(li5).keys() 
[MatrixEntry(0, 0, 1.2), MatrixEntry(2, 1, 3.7), MatrixEntry(0, 0, 1.2), MatrixEntry(1, 0, 2.1)]
>>># 可见没有去重成功

所以必须使用下面第二种方法构造

entries = sc.parallelize([MatrixEntry(0, 0, 1.2), MatrixEntry(1, 0, 2.1), MatrixEntry(2, 1, 3.7)])
#   - or using (long, long, float) tuples:
entries = sc.parallelize([(0, 0, 1.2), (1, 0, 2.1), (2, 1, 3.7)])
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值