를 사용한 성능 최적화 기술 한 데이터 집합이 매우 작고 다른 데이터 집합이 매우 큰 상황이 있고 이 둘 사이에 조인 작업을 수행하려고 한다고 가정합니다. 이 경우 작은 데이터 세트가 브로드캐스트 변수에 들어갈 수 있도록 브로드캐스트 조인을 선택해야 합니다. 브로드캐스트 변수를 사용하는 구문은 다음과 같습니다.방송에 참여하십시오. 여기서 우리는 매우 작은 두 번째 데이터 프레임을 가지고 있으며,이 데이터 프레임을 브로드 캐스트 변수로 유지하고 있습니다.
코드:
발 방송=사우스 캐롤라이나.방송(배열(1, 2, 3))
방송.배열에 대한 자세한 내용은 다음을 참조하십시오.(1, 2, 3)
2018 년 11 월내 누산기(“내 누산기”)
사우스 캐롤라이나.병렬 처리(배열(1, 2, 3, 4)).2864>누산기.추가(엑스))
누산기.캐시 및 지속
- 스파크는 지속()및 캐시()와 같은 자체 캐싱 메커니즘을 제공합니다.
- 캐시()및 지속()은 데이터 집합을 메모리에 저장합니다.
- 프로그램에서 여러 번 사용해야하는 작은 데이터 세트가 있으면 해당 데이터 세트를 캐시합니다.
- 캐시()–항상 메모리에
- 지속()–메모리 및 디스크
스파크는 지속 및 캐싱과 같은 자체 캐싱 메커니즘을 제공합니다. 유지 및 캐시 메커니즘은 작은 데이터 집합이 있고 해당 데이터 집합이 프로그램에서 여러 번 사용되는 요구 사항이 있을 때마다 데이터 집합을 메모리에 저장합니다. 우리가 적용 할 경우.캐시()그것은 항상 메모리에 데이터를 저장합니다,우리는 루이지애나를 적용 할 경우.지속()다음 데이터의 일부는 일부는 디스크에 저장 될 수있는 메모리에 저장 될 수있다.
5. 키 작업
- 셔플은 많은 메모리를 소비하는 무거운 작업입니다.
- 스파크에서 코딩하는 동안 사용자는 항상 셔플 작업을 피하려고 노력해야합니다.이러한 오류를 피하기 위해 사용자는 병렬 처리 수준을 높일 수 있습니다.이 작업을 수행하는 방법은 다음과 같습니다.
- 데이터를 올바르게 분할합니다.
우리가 스파크를 변형하는 동안 알고 있듯이 우리는 많은 바이 키 작업을 가지고 있습니다. 바이 키 작업은 많은 셔플을 생성합니다. 그들은 많은 메모리를 소비하기 때문에 셔플은 무거운 작업입니다. 스파크에서 코딩하는 동안 사용자는 셔플 작업이 성능을 저하시키기 때문에 항상 셔플 작업을 피하려고 노력해야 합니다. 높은 셔플이있는 경우 다음 사용자는 메모리에서 오류를 얻을 수 있습니다. 이 경우 해당 오류를 피하기 위해 사용자는 병렬 처리 수준을 높여야합니다. 왜냐하면 그룹바이키는 성능을 저해하는 많은 셔플을 생성하지만,감소바이키는 데이터를 많이 셔플하지 않기 때문이다. 따라서 그룹 바이키에 비해 축소 바이키가 더 빠릅니다. 바이키 작업을 사용할 때마다 사용자는 데이터를 올바르게 분할해야 합니다.
6. 파일 형식 선택
- 스파크는 다양한 형식을 지원합니다.
- 스파크 작업은 높은 성능과 최상의 분석을 제공 물어 압축 마루 파일을 선택하여 최적화 할 수 있습니다.
- 쪽모이 세공 파일은 바닥 글과 함께 메타 데이터를 전달하는 스파크의 기본입니다.이 응용 프로그램은 모든 파일 형식을 지원합니다. 스파크 작업은 뭐 이따위 압축 마루 파일을 선택하여 최적화 할 수 있습니다. 마루 파일은 바닥 글과 함께 메타 데이터를 수행하는 스파크 기본 우리가 마루 파일은 이진 형식으로 그리고 데이터와 함께 그것은 또한 또한 메타 데이터 및 바닥 글을 운반의 바닥 글을 수행하는 스파크 기본 알고 그래서 당신은 어떤 마루 파일을 만들 때마다,당신은 볼 수 있습니다.데이터 파일과 함께 동일한 디렉토리에 있는 메타데이터 파일.
코드:
발 사람들=스파크.읽기.이 예제는 다음과 같습니다.2017 년 11 월 15 일(토)~2017 년 11 월 15 일(일)쓰기.마루(“사람들.”마루”)
발 파케트필레드=스파크.읽기.마루(“사람들.이 문제를 해결하는 방법은 무엇입니까?읽기.형식(“아 브로”).예를 들면 다음과 같습니다.7714>
“이름”,”즐겨 찾기 _색상”)을 선택하십시오.쓰기.형식(“아 브로”).저장(“이름 및 즐겨 찾기 색상.가비지 콜렉션 튜닝
- 사용되지 않는 오브젝트의 대규모 콜렉션이 있는 경우 가비지 콜렉션이 문제가 될 수 있습니다.
- 첫 번째 단계는 스파크 작업을 제출하는 동안–자세한 정보를 선택하여 통계를 수집하는 것입니다.
- 이상적인 상황에서 우리는 힙 메모리의 오버 헤드를<10%유지하려고합니다.가비지 수집 튜닝의 첫 번째 단계는 스파크 제출 자세한 정보 표시에서 옵션을 선택하여 정적을 수집하는 것입니다. 일반적으로 이상적인 상황에서는 가비지 수집 메모리를 힙 메모리의 10%미만으로 유지해야합니다.
8. 병렬 처리 수준
- 병렬 처리는 스파크 작업을 튜닝하는 동안 매우 중요한 역할을합니다.
- 모든 파티션~작업에는 처리를 위해 단일 코어가 필요합니다.
- 병렬 처리를 유지하는 방법에는 두 가지가 있습니다:
- 다시 분할:높은 셔플 링으로 동일한 수의 파티션을 제공합니다
- 병합:일반적으로 셔플 링이 적은 파티션 수를 줄입니다.
분산 환경에서 병렬 처리는 스파크 작업을 조정하는 동안 매우 중요한 역할을합니다. 스파크 작업이 제출 될 때마다 스테이지를 포함 할 데스크를 만들고 작업은 파티션에 따라 달라 지므로 모든 파티션이나 작업에는 처리를 위해 시스템의 단일 코어가 필요합니다. 병렬 처리를 유지하는 방법에는 다시 분할 및 병합이라는 두 가지가 있습니다. 당신이 다시 분할 방법을 적용 할 때마다 그것은 당신에게 파티션의 동일한 번호를 제공하지만 모든 데이터를 채찍질 할 때 다시 분할에 대한 이동하지하는 것이 좋습니다 그래서 그것은 많은 셔플 것입니다. 합체 일반적으로 파티션의 수를 줄이고 데이터의 적은 셔플을 만듭니다.
스파크 최적화를위한 이러한 요소는 적절하게 사용되는 경우-