복붙노트

[HADOOP] 스파크가 강제로 코드를 실행하도록하려면 어떻게해야합니까?

HADOOP

스파크가 강제로 코드를 실행하도록하려면 어떻게해야합니까?

게으른 평가로 인해 실행할 필요가 없다고 생각하는 경우에도 Spark에 맵핑 호출을 실행하도록 강제 할 수 있습니까?

cache ()를 맵 호출에 넣으려고했으나 여전히 그 트릭을 수행하지 않습니다. 내지도 방법은 결과를 실제로 HDFS에 업로드합니다. 그래서, 그 쓸데없는,하지만 스파크 생각합니다.

해결법

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

    1.짧은 답변:

    짧은 답변:

    스파크가 강제로 변환을 실행하려면 결과를 요구해야합니다. 때때로 간단한 카운트 동작으로 충분합니다.

    TL; DR :

    자, RDD 작업을 살펴 ​​보겠습니다.

    RDD는 두 가지 유형의 작업을 지원합니다.

    예를 들어, map은 함수를 통해 각 데이터 집합 요소를 전달하고 결과를 나타내는 새 RDD를 반환하는 변환입니다. 반면에 reduce는 일부 함수를 사용하여 RDD의 모든 요소를 ​​집계하고 최종 결과를 드라이버 프로그램에 반환하는 작업입니다 (분산 데이터 세트를 반환하는 병렬 reduceByKey가 있음에도 불구하고).

    Spark의 모든 변환은 결과를 즉시 계산하지 않기 때문에 게으르다.

    대신 일부 기본 데이터 세트 (예 : 파일)에 적용된 변형을 기억합니다. 변환은 드라이버 프로그램에 결과를 반환해야 할 때만 계산됩니다. 이 디자인을 사용하면 Spark을보다 효율적으로 실행할 수 있습니다. 예를 들어, 맵을 통해 만든 데이터 세트를 축소에서 사용하고 맵핑 된 더 큰 데이터 세트가 아닌 드라이버의 결과 만 반환한다는 것을 알 수 있습니다.

    기본적으로 변환 된 각 RDD는 사용자가 작업을 실행할 때마다 다시 계산 될 수 있습니다. 그러나 persist (또는 cache) 메소드를 사용하여 메모리에 RDD를 유지할 수도 있습니다.이 경우 Spark는 다음 번 쿼리 할 때 훨씬 빠르게 액세스 할 수 있도록 클러스터에 요소를 보관합니다. 또한 디스크에 지속적인 RDD를 지원하거나 여러 노드에 걸쳐 복제 할 수 있습니다.

    Spark에지도 호출을 강제 실행하려면 결과를 요구해야합니다. 카운트 액션으로 충분할 때도 있습니다.

  2. ==============================

    2.스파크 변환은 수행해야 할 작업 만 설명합니다. 실행을 트리거하려면 조치가 필요합니다.

    스파크 변환은 수행해야 할 작업 만 설명합니다. 실행을 트리거하려면 조치가 필요합니다.

    귀하의 경우에는 더 깊은 문제가 있습니다. HDFS에 데이터를 저장하는 것과 같은 일종의 부작용을 만드는 것이 목표라면 올바른 방법은 foreach입니다. 그것은 둘 다 행동이고 깨끗한 의미를 지닙니다. 중요한 점은지도와 달리 참조 투명성을 의미하지는 않습니다.

  3. from https://stackoverflow.com/questions/31383904/how-can-i-force-spark-to-execute-code by cc-by-sa and MIT license