2
저는 1.6.0을 사용하고 있고 예상 작업에는 pyspark.mllib.tree.RandomForestModel이 있습니다. 다음과 같이 내 data_rdd는 포맷 :Pyspark rdd.zip ValueError : 쌍이 다른 수의 항목으로 RDD를 직렬화 해제 할 수 없습니다.
는[LabeledPoint(id1,feature),
LabeledPoint(id2,feature),
...]
내 코드
rfmodel = RandomForestModel.load(sc,modelpath)
는 내가 원하는 것은 예측 라벨과 함께 ID를 얻을 수입니다. 나는 다음을 그래서,
predictions = rfmodel.predict(data_rdd.map(lambda x:x.features))
idsAndPredictions = data_rdd.map(lambda lp: lp.label).zip(predictions)
는이 코드를 실행하고는
ValueError: Can not deserialize RDD with different number of items in pair: (91, 90)
오류 때문에 압축 기능으로 발생하는 오류를 제공합니다. data_rdd와 같은 길이의 예측이 없기 때문에이 오류가 발생하는 것 같습니다. 그러나 필자의 경우 data_rdd와 예측은 분명히 같은 길이입니다.
제 질문은 어떻게 작동합니까? 스파크 버그 인 경우 동일한 결과를 얻으려면 다른 방법이 있습니까?
길이가 다른 것으로 보이는 코드 때문에 예측 및 data_rdd.map (lambda lp : lp.label)의 길이를 알려주십시오. –
@ShivanshSrivastava 답장을 보내 주셔서 감사합니다. 필자의 경우 예측은 data_rdd의 row-by-row map 연산에 의해 이루어진다. 그래서 나는 그들이 다른 길이라고 생각하지 않는다. 내 데이터는 수억 개의 샘플로 구성되어 있으므로 각각을 세는 데 시간이 걸릴 수 있습니다. 물론이 가능성을 고려하고 카운트 번호를 나중에 제공 할 것입니다. 조언 해 주셔서 다시 한 번 감사드립니다. – TheStupidOne
[link] (http://stackoverflow.com/questions/34176526/cannot-deserialize-rdd-with-different-number-of-items-in-pair) – stefan8888