나는 다음과 같은 스키마 불꽃 Dataframe df
이 다음과 같은 스키마를 얻을 기대 : 지금까지불꽃 Dataframe [벡터]
root
|-- features: vector (nullable = true)
내가 (이 게시물의 영향 : Converting Spark Dataframe(with WrappedArray) to RDD[labelPoint] in scala) 다음 코드 조각을 가지고 있지만 나는 두려워 뭔가 내가 잘못이다 왜냐하면 합리적인 양의 행을 계산하는 데 매우 긴 시간이 걸리기 때문입니다. 또한 행이 너무 많으면 응용 프로그램이 힙 공간 예외로 인해 충돌합니다.
val clustSet = df.rdd.map(r => {
val arr = r.getAs[mutable.WrappedArray[Double]]("features")
val features: Vector = Vectors.dense(arr.toArray)
features
}).map(Tuple1(_)).toDF()
이 경우 지침 arr.toArray
이 좋지 않은 것으로 생각됩니다. 모든 설명이 도움이 될 것입니다.
감사합니다.
매우 감사 차이에 대해 물어 보지 않았다 , 그것은 많은 도움을 주었고 답으로 표시했습니다. 지금은 더 많은 행을 실행할 수 있으며 시간면에서 만족 스럽습니다. 예외는 있지만 여전히 발생합니다. __org.apache.spark.SparkException : Kryo serialization failed : 버퍼 오버플로입니다. 사용 가능 : 0, 필수 : 200,000 행을 시도 할 때 1__ 이것에 대해 통찰력을 가지겠습니까? 다시 한번 감사드립니다. – user159941
@ user159941 http://stackoverflow.com/questions/31947335/how-kryo-serializer-allocates-buffer-in-spark를 확인하십시오. –
다음 코드를 설정하십시오. ** val conf = new SparkConf() . set ("spark.serializer", "org.apache.spark.serializer.KryoSerializer") .set ("spark.kryoserializer.buffer.max.mb", "256") ** 그리고 작동했습니다! 고맙습니다. – user159941