0
각 데이터 프레임 파티션의 첫 번째 요소를 검색해야합니다. mapPartitions를 사용해야한다는 것을 알고 있지만 사용법이 명확하지 않습니다.각 데이터 프레임 파티션의 첫 번째 요소 Spark 2.0
참고 : Spark2.0을 사용 중이며 데이터 프레임이 정렬됩니다.
각 데이터 프레임 파티션의 첫 번째 요소를 검색해야합니다. mapPartitions를 사용해야한다는 것을 알고 있지만 사용법이 명확하지 않습니다.각 데이터 프레임 파티션의 첫 번째 요소 Spark 2.0
참고 : Spark2.0을 사용 중이며 데이터 프레임이 정렬됩니다.
나는 그것을 다음과 같이 보일 것이다 믿습니다
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
를 지원하기 위해 업데이트 /Dataset.html 그리고이 메서드 호출에서 두 번째 매개 변수로 Encoder가 필요하지 않은지 궁금하십니까? – MaxNevermind
이 솔루션을 시도하면 "데이터 세트에 저장된 유형의 인코더를 찾을 수 없습니다. 원시 유형 (Int, String 등) 및 제품 유형 (사례 클래스)은 spar.implicits를 가져 와서 지원됩니다." 오류가 계속 발생합니다 – syl
mapPartitions를 foreachPartition으로 바꾸어도 작동하지만 빈 목록()이 반환됩니다 – syl