복붙노트

[SCALA] 아파치 스파크 :하지 않을 때는 mapPartition 및 foreachPartition를 사용하는?

SCALA

아파치 스파크 :하지 않을 때는 mapPartition 및 foreachPartition를 사용하는?

나는 우리가 RDDs의 그룹이 아닌 개별 RDD 요소에 대한 몇 가지 리소스를 초기화 할 때 우리가 이상적으로 mapPartition 및 foreachPartition를 사용해야 함을 알고있다. 데이터의 각 파티션의 JDBC 연결을 초기화하는 경우, 예를 들어. 그러나 우리는 그들 중 하나를 사용하는 대신 일반 바닐라지도 ()와 foreach는 () 변환 및 작업을 사용하지 않아야가 시나리오입니다.

해결법

  1. ==============================

    1.당신이 스파크 작업을 쓸 때 사용 mapPartition 또는 foreachPartition 중 하나는 당신은 각각의 파티션 데이터를 통해 파티션 데이터 자체하거나 반복 처리를 수정할 수 있습니다. 하나 개의 특정 집행에서 df.reduceByKey : 매개 변수가 집행에 실행됩니다로 전달 된 익명 함수 따라서 모든 노드 예컨대 호출하는 코드를 실행할 수있는 실행 가능한 방법이 없습니다. 이 코드는 드라이버 만 노드에서 실행해야합니다. 따라서 드라이버 만의 코드에서 당신은 dataframes, 데이터 세트 및 스파크 세션에 액세스 할 수 있습니다.

    당신이 스파크 작업을 쓸 때 사용 mapPartition 또는 foreachPartition 중 하나는 당신은 각각의 파티션 데이터를 통해 파티션 데이터 자체하거나 반복 처리를 수정할 수 있습니다. 하나 개의 특정 집행에서 df.reduceByKey : 매개 변수가 집행에 실행됩니다로 전달 된 익명 함수 따라서 모든 노드 예컨대 호출하는 코드를 실행할 수있는 실행 가능한 방법이 없습니다. 이 코드는 드라이버 만 노드에서 실행해야합니다. 따라서 드라이버 만의 코드에서 당신은 dataframes, 데이터 세트 및 스파크 세션에 액세스 할 수 있습니다.

    여기에이 문제와 가능한 솔루션을 통해 자세한 설명을 찾아주세요

  2. from https://stackoverflow.com/questions/49527047/apache-spark-when-not-to-use-mappartition-and-foreachpartition by cc-by-sa and MIT license