2016-09-28 6 views

답변

1

나는 그것을 다음과 같이 보일 것이다 믿습니다

import org.apache.spark.sql.catalyst.encoders.RowEncoder 
... 
implicit val encoder = RowEncoder(df.schema) 
val newDf = df.mapPartitions(iterator => iterator.take(1)) 

이 DataFrame의 각 파티션에서 한 요소를 취할 것입니다. 그러면 운전자에게 모든 데이터를 수집 할 수 있습니다. 예 :

nedDf.collect() 

그러면 파티션 수와 동일한 수의 요소가있는 배열이 반환됩니다.

UPD 내가 여기 http://spark.apache.org/docs/latest/api/java/org/apache/spark/sql 메소드 서명에서 찾고 있어요 스파크 2.0

+0

를 지원하기 위해 업데이트 /Dataset.html 그리고이 메서드 호출에서 두 번째 매개 변수로 Encoder가 필요하지 않은지 궁금하십니까? – MaxNevermind

+0

이 솔루션을 시도하면 "데이터 세트에 저장된 유형의 인코더를 찾을 수 없습니다. 원시 유형 (Int, String 등) 및 제품 유형 (사례 클래스)은 spar.implicits를 가져 와서 지원됩니다." 오류가 계속 발생합니다 – syl

+0

mapPartitions를 foreachPartition으로 바꾸어도 작동하지만 빈 목록()이 반환됩니다 – syl

관련 문제