Spark Accumulators 설명 : Apache Spark



이 Apache Spark 블로그에서는 Spark 누산기에 대해 자세히 설명합니다. 예제를 통해 Spark 누산기 사용법을 알아 봅니다. Spark 누산기는 Hadoop Mapreduce 카운터와 유사합니다.

Prithviraj Bose 제공

다음은 Spark 누산기에 대해 알아야 할 사항에 대한 블로그입니다. 대부분의 IT 채용 담당자가 찾는 핵심 기술인이 기술의 성장과 수요는 처음부터 기하 급수적이었습니다.





Windows 10에서 클래스 경로를 설정하는 방법

어큐뮬레이터 란 무엇입니까?

누산기는 실행기에서 정보를 집계하는 데 사용되는 변수입니다. 예를 들어,이 정보는 손상된 레코드 수 또는 특정 라이브러리 API가 호출 된 횟수와 같은 데이터 또는 API 진단과 관련 될 수 있습니다.

어큐뮬레이터가 필요한 이유를 이해하기 위해 작은 예를 살펴 보겠습니다.



다음은 중앙 콜카타 지역에있는 상점 체인의 가상 트랜잭션 로그입니다.

logs-Spark-accumulators

4 개의 필드가 있습니다.

필드 1-> 도시



필드 2-> 지역

필드 3-> 판매 된 품목 범주

필드 4-> 판매 된 품목의 가치

그러나 로그가 손상 될 수 있습니다. 예를 들어, 두 번째 줄은 빈 줄이고 네 번째 줄은 일부 네트워크 문제를보고하며 마지막 줄은 판매 가치가 0 (발생할 수 없음)을 표시합니다.

누적기를 사용하여 트랜잭션 로그를 분석하여 빈 로그 (빈 줄) 수, 네트워크 실패 횟수, 카테고리가없는 제품 또는 매출이 0 회 기록 된 횟수를 찾을 수 있습니다. 전체 샘플 로그를 찾을 수 있습니다. 여기 .
누산기는 다음과 같은 모든 작업에 적용 할 수 있습니다.
1. 교환-> f (x, y) = f (y, x) , 및
2. 연관성-> f (f (x, y), z) = f (f (x, z), y) = f (f (y, z), x)
예를 들면 합집합최대 함수는 위의 조건을 충족하지만 평균 하지 않습니다.

Spark Accumulator를 사용하는 이유는 무엇입니까?

이제 왜 누산기가 필요하고 아래 코드에 표시된대로 변수를 사용하면 안됩니다.

위 코드의 문제점은 드라이버가 변수를 인쇄 할 때 blankLines 그 값은 0이됩니다. 이는 Spark가이 코드를 모든 실행기에 전달할 때 변수가 해당 실행기에 로컬이되고 업데이트 된 값이 드라이버로 다시 전달되지 않기 때문입니다. 이 문제를 피하기 위해 우리는 blankLines 모든 실행기에서이 변수에 대한 모든 업데이트가 드라이버로 다시 전달되도록하는 누산기. 따라서 위 코드는 다음과 같이 작성해야합니다.

이것은 누산기가 blankLines 모든 실행기에서 업데이트되고 업데이트는 드라이버로 다시 전달됩니다.

네트워크 오류 또는 판매 가치 제로 등에 대해 다른 카운터를 구현할 수 있습니다. 다른 카운터의 구현과 함께 전체 소스 코드를 찾을 수 있습니다. 여기 .

Hadoop Map-Reduce에 익숙한 사람들은 Spark의 누적 기가 Hadoop의 Map-Reduce 카운터와 유사하다는 것을 알 수 있습니다.

주의 사항

누산기를 사용할 때 프로그래머가 알아야 할 몇 가지주의 사항이 있습니다.

  1. 내부 계산 변형 느리게 평가되므로 동작 RDD에서 발생 변형 실행되지 않습니다. 그 결과, 다음과 같은 함수 내부에서 사용되는 누산기 지도() 또는 필터() 일부가 아니면 실행되지 않습니다 동작 RDD에서 발생합니다.
  2. Spark는 누산기 업데이트 보장 내부 행위 한 번만 . 따라서 작업이 다시 시작되고 계보가 다시 계산 되더라도 누산기는 한 번만 업데이트됩니다.
  3. Spark는이를 보장하지 않습니다. 변형 . 따라서 작업이 다시 시작되고 계보가 다시 계산되면 누산기가 두 번 이상 업데이트 될 때 원하지 않는 부작용이 발생할 가능성이 있습니다.

안전한 편이 되려면 항상 액션 내부에서만 누산기를 사용하십시오.
코드 여기 이를 달성하는 방법에 대한 간단하면서도 효과적인 예를 보여줍니다.
누산기에 대한 자세한 내용은 .

질문이 있으십니까? 댓글 섹션에서이를 언급하면 ​​다시 연락 드리겠습니다.

관련 게시물:

Apache Spark combineByKey 설명