Prithviraj Bose 제공
다음은 Spark 누산기에 대해 알아야 할 사항에 대한 블로그입니다.와 대부분의 IT 채용 담당자가 찾는 핵심 기술인이 기술의 성장과 수요는 처음부터 기하 급수적이었습니다.
Windows 10에서 클래스 경로를 설정하는 방법
어큐뮬레이터 란 무엇입니까?
누산기는 실행기에서 정보를 집계하는 데 사용되는 변수입니다. 예를 들어,이 정보는 손상된 레코드 수 또는 특정 라이브러리 API가 호출 된 횟수와 같은 데이터 또는 API 진단과 관련 될 수 있습니다.
어큐뮬레이터가 필요한 이유를 이해하기 위해 작은 예를 살펴 보겠습니다.
다음은 중앙 콜카타 지역에있는 상점 체인의 가상 트랜잭션 로그입니다.
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 카운터와 유사하다는 것을 알 수 있습니다.
주의 사항
누산기를 사용할 때 프로그래머가 알아야 할 몇 가지주의 사항이 있습니다.
- 내부 계산 변형 느리게 평가되므로 동작 RDD에서 발생 변형 실행되지 않습니다. 그 결과, 다음과 같은 함수 내부에서 사용되는 누산기 지도() 또는 필터() 일부가 아니면 실행되지 않습니다 동작 RDD에서 발생합니다.
- Spark는 누산기 업데이트 보장 내부 행위 한 번만 . 따라서 작업이 다시 시작되고 계보가 다시 계산 되더라도 누산기는 한 번만 업데이트됩니다.
- Spark는이를 보장하지 않습니다. 변형 . 따라서 작업이 다시 시작되고 계보가 다시 계산되면 누산기가 두 번 이상 업데이트 될 때 원하지 않는 부작용이 발생할 가능성이 있습니다.
안전한 편이 되려면 항상 액션 내부에서만 누산기를 사용하십시오.
코드 여기 이를 달성하는 방법에 대한 간단하면서도 효과적인 예를 보여줍니다.
누산기에 대한 자세한 내용은 이 .
질문이 있으십니까? 댓글 섹션에서이를 언급하면 다시 연락 드리겠습니다.
관련 게시물: