다음을 통해 공유


Notebook에 대한 실시간 조언을 위한 Apache Spark Advisor

Apache Spark Advisor는 Apache Spark에서 실행하는 명령 및 코드를 분석하고 Notebook 실행 시 실시간 조언을 표시합니다. Apache Spark 관리자에는 사용자가 일반적인 실수를 방지하는 데 도움이 되는 기본 제공 패턴이 있습니다. 코드 최적화를 위한 권장 사항을 제공하고, 오류 분석을 수행하며, 장애의 근본 원인을 찾아냅니다.

기본 제공 조언

임펄스와 통합된 도구인 Spark Advisor는 Apache Spark 애플리케이션에서 문제를 감지하고 해결하기 위한 기본 제공 패턴을 제공합니다. 이 문서에서는 도구에 포함된 몇 가지 패턴에 대해 설명합니다.

필요한 조언 유형에 따라 최근 실행 창을 열 수 있습니다.

'randomSplit'를 사용할 때 일관되지 않은 결과를 반환할 수 있습니다.

randomSplit 메서드로 작업할 때 일관되지 않거나 부정확한 결과가 반환될 수 있습니다. randomSplit() 메서드를 사용하기 전에 RDD(Apache Spark) 캐싱을 사용합니다.

randomSplit() 메서드는 데이터 프레임에서 sample()을 여러 번 수행하는 것과 같습니다. 각 샘플이 파티션 내에서 데이터 프레임을 다시 집합, 파티션 및 정렬하는 위치입니다. randomSplit() 및 sample() 모두 파티션 및 정렬 순서에 대한 데이터 분포가 중요합니다. 데이터 리페치 시 변경되는 경우 분할 간에 중복되거나 누락된 값이 있을 수 있습니다. 동일한 시드를 사용하는 동일한 샘플은 다른 결과를 생성할 수 있습니다.

이러한 불일치가 모든 실행에서 발생하는 것은 아니지만 완전히 제거하려면 데이터 프레임을 캐시하거나 열에서 다시 분할하거나 groupBy와 같은 집계 함수를 적용합니다.

테이블/뷰 이름이 이미 사용 중임

생성된 테이블과 동일한 이름의 뷰가 이미 존재하거나 생성된 뷰와 동일한 이름의 테이블이 이미 존재합니다. 쿼리나 애플리케이션에서 이 이름을 사용하면 어느 것이 먼저 만들어지든 관계없이 뷰만 반환됩니다. 충돌을 방지하려면 테이블이나 뷰의 이름을 바꿉니다.

힌트를 인식할 수 없음

spark.sql("SELECT /*+ unknownHint */ * FROM t1")

지정된 관계 이름을 찾을 수 없음

힌트에 지정된 관계를 찾을 수 없습니다. 관계의 철자가 올바르고 힌트 범위 내에서 액세스 가능한지 확인하세요.

spark.sql("SELECT /*+ BROADCAST(unknownTable) */ * FROM t1 INNER JOIN t2 ON t1.str = t2.str")

쿼리의 힌트는 다른 힌트가 적용되는 것을 방지함

선택한 쿼리에 다른 힌트가 적용되지 않도록 하는 힌트가 포함되어 있습니다.

spark.sql("SELECT /*+ BROADCAST(t1), MERGE(t1, t2) */ * FROM t1 INNER JOIN t2 ON t1.str = t2.str")

반올림 오류 전파를 줄이기 위해 'park.advise.divisionExprConvertRule.enable'을 사용하도록 설정

이 쿼리에는 Double 형식의 식이 포함됩니다. 나누기 식을 줄이고 반올림 오류 전파를 줄이는 데 도움이 되는 'park.advise.divisionExprConvertRule.enable' 구성을 사용하도록 설정하는 것이 좋습니다.

"t.a/t.b/t.c" convert into "t.a/(t.b * t.c)"

쿼리 성능을 개선하기 위해 'park.advise.nonEqJoinConvertRule.enable'을 사용하도록 설정

이 쿼리에는 쿼리 내의 "Or" 조건으로 인해 시간이 오래 걸리는 조인이 포함되어 있습니다. 이 쿼리를 가속화하기 위해 "Or" 조건에 의해 트리거된 조인을 SMJ 또는 BHJ로 변환하는 데 도움이 될 수 있는 'park.advise.nonEqJoinConvertRule.enable' 구성을 사용하도록 설정하는 것이 좋습니다.

사용자 환경

Apache Spark Advisor는 Notebook 셀 출력에서 정보, 경고, 오류를 포함한 조언을 실시간으로 표시합니다.

  • 정보 정보를 보여 주는 스크린샷.

  • 경고 경고를 보여 주는 스크린샷.

  • 오류 오류를 보여 주는 스크린샷.

Spark Advisor 설정

Spark Advisor 설정을 사용하면 필요에 따라 특정 유형의 Spark 조언을 표시하거나 숨길지 여부를 선택할 수 있습니다. 또한 기본 설정에 따라 작업 영역 내에서 Notebook에 대해 Spark Advisor를 사용하거나 사용하지 않도록 설정할 수 있는 유연성이 있습니다.

Fabric Notebook 수준에서 Spark Advisor 설정에 액세스하여 이점을 활용하고 생산적인 Notebook 작성 환경을 보장할 수 있습니다.

Spark Advisor 설정을 보여 주는 스크린샷.