[HADOOP] 스파크가 강제로 코드를 실행하도록하려면 어떻게해야합니까?
HADOOP스파크가 강제로 코드를 실행하도록하려면 어떻게해야합니까?
게으른 평가로 인해 실행할 필요가 없다고 생각하는 경우에도 Spark에 맵핑 호출을 실행하도록 강제 할 수 있습니까?
cache ()를 맵 호출에 넣으려고했으나 여전히 그 트릭을 수행하지 않습니다. 내지도 방법은 결과를 실제로 HDFS에 업로드합니다. 그래서, 그 쓸데없는,하지만 스파크 생각합니다.
해결법
-
==============================
1.짧은 답변:
짧은 답변:
스파크가 강제로 변환을 실행하려면 결과를 요구해야합니다. 때때로 간단한 카운트 동작으로 충분합니다.
TL; DR :
자, RDD 작업을 살펴 보겠습니다.
RDD는 두 가지 유형의 작업을 지원합니다.
예를 들어, map은 함수를 통해 각 데이터 집합 요소를 전달하고 결과를 나타내는 새 RDD를 반환하는 변환입니다. 반면에 reduce는 일부 함수를 사용하여 RDD의 모든 요소를 집계하고 최종 결과를 드라이버 프로그램에 반환하는 작업입니다 (분산 데이터 세트를 반환하는 병렬 reduceByKey가 있음에도 불구하고).
Spark의 모든 변환은 결과를 즉시 계산하지 않기 때문에 게으르다.
대신 일부 기본 데이터 세트 (예 : 파일)에 적용된 변형을 기억합니다. 변환은 드라이버 프로그램에 결과를 반환해야 할 때만 계산됩니다. 이 디자인을 사용하면 Spark을보다 효율적으로 실행할 수 있습니다. 예를 들어, 맵을 통해 만든 데이터 세트를 축소에서 사용하고 맵핑 된 더 큰 데이터 세트가 아닌 드라이버의 결과 만 반환한다는 것을 알 수 있습니다.
기본적으로 변환 된 각 RDD는 사용자가 작업을 실행할 때마다 다시 계산 될 수 있습니다. 그러나 persist (또는 cache) 메소드를 사용하여 메모리에 RDD를 유지할 수도 있습니다.이 경우 Spark는 다음 번 쿼리 할 때 훨씬 빠르게 액세스 할 수 있도록 클러스터에 요소를 보관합니다. 또한 디스크에 지속적인 RDD를 지원하거나 여러 노드에 걸쳐 복제 할 수 있습니다.
Spark에지도 호출을 강제 실행하려면 결과를 요구해야합니다. 카운트 액션으로 충분할 때도 있습니다.
-
==============================
2.스파크 변환은 수행해야 할 작업 만 설명합니다. 실행을 트리거하려면 조치가 필요합니다.
스파크 변환은 수행해야 할 작업 만 설명합니다. 실행을 트리거하려면 조치가 필요합니다.
귀하의 경우에는 더 깊은 문제가 있습니다. HDFS에 데이터를 저장하는 것과 같은 일종의 부작용을 만드는 것이 목표라면 올바른 방법은 foreach입니다. 그것은 둘 다 행동이고 깨끗한 의미를 지닙니다. 중요한 점은지도와 달리 참조 투명성을 의미하지는 않습니다.
from https://stackoverflow.com/questions/31383904/how-can-i-force-spark-to-execute-code by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] Hadoop의 메모리 부족 오류 (0) | 2019.05.30 |
---|---|
[HADOOP] 네임 노드가 시작되지 않음 (0) | 2019.05.30 |
[HADOOP] Sqoop 가져 오기 : 복합 기본 키 및 텍스트 기본 키 (0) | 2019.05.29 |
[HADOOP] 감속기에서 매퍼 카운터에 액세스 (0) | 2019.05.29 |
[HADOOP] 값을 두 번 반복 (MapReduce) (0) | 2019.05.29 |