Contour 분석 성능 개선
분석 구조, 필터와 입력 데이터의 파일 구성을 조정하면 Contour 분석과 대시보드의 계산량 및 대기 시간을 줄일 수 있습니다.
공통 계산 재사용
여러 경로에서 같은 필터와 변환을 반복한다면 공통 입력 경로를 만들고 그 결과를 다른 경로의 시작점으로 사용합니다. 경로 결과 재사용은 같은 분석 안에서 별도 데이터셋 저장 없이도 가능합니다.
조인 전에 가능한 필터를 적용합니다. 추가할 데이터셋을 새 경로에서 먼저 필터링하고 그 경로의 결과와 조인하면 처리 범위를 줄일 수 있습니다.
여러 조건 중 하나라도 맞는 any match 조인은 분산 계산에서 자원 사용이 특히 큽니다. 입력을 먼저 줄이고, 경우에 따라 별도 조인과 합집합으로 구성을 바꾸는 방안을 검토합니다. 이때 중복과 매칭되지 않은 행의 처리가 기존 조인과 같은지 확인합니다.
복잡한 조인, 피벗이나 정규식 필터의 결과를 여러 하위 보드가 사용한다면 결과 데이터셋으로 저장하고 하위 계산이 그 데이터셋에서 시작하도록 구성하는 것이 유리할 수 있습니다.
매개변수와 화면 규모
매개변수를 바꾸면 분석의 모든 보드가 재평가 대상이 됩니다. 실제 반복 계산을 줄이려면 매개변수를 사용하지 않는 복잡한 계산을 먼저 데이터셋으로 저장하고 그 뒤에 매개변수 필터와 집계를 배치합니다. 값이 바뀌어도 앞부분의 조인과 피벗을 다시 계산하지 않고 저장 결과를 사용할 수 있습니다.
화면 응답성을 위해 분석 하나의 경로는 15개에서 20개 이하로 유지하는 것이 권장됩니다. 더 많은 경로가 필요하면 여러 분석으로 나눕니다. 이 수치는 화면 구성을 위한 권고입니다.
정확하고 자료형에 맞는 필터
가능하면 대소문자를 구분하는 정확 일치 필터를 사용합니다. 문자열 데이터를 대문자 또는 소문자로 통일한 뒤 is 같은 정확 일치 조건을 쓰면 contains나 정규식보다 계산을 줄일 수 있습니다. 정규식은 계산 비용이 큰 편입니다.
열 자료형에 맞는 비교를 선택합니다. integer, long, double 열에서 특정 숫자를 찾을 때는 String exact match보다 Number equal to를 사용합니다.
입력 파일 크기와 파티션
입력 데이터셋의 평균 파일 크기는 128MB 이상을 목표로 구성합니다. 데이터셋의 About에서 파일 수와 총크기를 확인합니다.
365MB가 80개 파일에 나뉜 예시는 파일당 약 4.6MB로 작습니다. 같은 크기를 두 개로 균등하게 나누면 파일당 약 182.5MB입니다. 실제 크기는 데이터 분포와 압축에 따라 달라지므로 출력 파일 구성을 확인합니다.
상위 Python 변환에서 이미 읽은 Spark DataFrame df의 파티션 수를 바꾸는 예시는 다음과 같습니다. 변경된 df를 출력에 써야 저장 파일 구성에 반영됩니다.
df = df.repartition(2)
데이터셋 프로젝션
데이터셋 소유자는 예상되는 쿼리 패턴에 맞춰 프로젝션을 구성할 수 있습니다. 시작 보드의 Optimized에는 사용할 수 있는 프로젝션이 표시되며, 표시된 열에 정확 일치 필터를 적용하여 활용합니다.
Contour가 이 화면에서 표시하는 것은 입력 데이터셋의 모든 열을 포함하는 필터 최적화 프로젝션입니다.
프로젝션은 데이터가 기록될 때마다 추가 계산과 저장 공간을 사용합니다. 쓰기 한 번당 같은 패턴으로 10회에서 100회 정도 읽는 등 읽기 빈도가 충분히 높을 때 비용 절감에 적합합니다.
일정과 공유 보고서
Contour 결과 데이터셋에 일정을 설정했다면 빌드가 필요한 데이터 주기로 실행되는지 관찰합니다. 입력이 하루에 한 번 갱신되는데 결과를 매시간 빌드하는 구성은 불필요한 계산을 늘립니다.
많은 사용자가 Foundry Report에서 분석을 사용하면 매개변수를 필요한 최소한으로 둡니다. 매개변수 선택 후에는 필터와 시각화용 집계만 수행하고 복잡한 조인과 피벗은 미리 계산한 데이터셋에 두는 구성이 권장됩니다.