2017-10-03 3 views
1

나는 CoordinateMatrix에이 줄을 실행하기 위해 노력하고있어 처리를하지 반복 가능한 경우MatrixEntry은 ... CoordinateMatrix ... pyspark MLlib

스칼라에 해당하는이 작동하는 것 같다하지만 pyspark에 실패
test = test.entries.map(lambda (i, j, v): (j, (i, v))) 

. 내가

>>> test = test_coord.entries 
>>> test.first() 
>>> MatrixEntry(0, 0, 7.0) 

사람은 오프가 무엇인지 알고 ... CoordinateMatrix 함께 일하고있는 라인이 실행되었을 때 내가 오류 ...

'MatrixEntry' object is not iterable 

그리고 확인?

답변

2

한다고 가정 test는하는 CoordinatedMatrix입니다 :

test.entries.map(lambda e: (e.j, (e.i, e.value))) 

측면 참고 : 당신이 람다 함수에 튜플 압축을 풀 수 없습니다. 따라서 map(lambda (x, y, z):)은 실패한 것으로 보이지 않지만이 경우에는 작동하지 않습니다.


:

test = CoordinateMatrix(sc.parallelize([(1,2,3), (4,5,6)])) 
test.entries.collect() 
# [MatrixEntry(1, 2, 3.0), MatrixEntry(4, 5, 6.0)] 
test.entries.map(lambda e: (e.j, (e.i, e.value))).collect() 
# [(2L, (1L, 3.0)), (5L, (4L, 6.0))] 
+1

당신을 감사합니다! 변수 (i j v)가 왼쪽에 있어야한다고 생각했습니다. – cpd1