집 >데이터 베이스 >MySQL 튜토리얼 >Spark SQL UDF가 때때로 외부 조인 대신 데카르트 곱을 발생시키는 이유는 무엇입니까?
UDF 및 데카르트 곱
문제 이해
Spark SQL에서 사용자 정의 사용자 사용 -SQL 쿼리의 정의된 함수(UDF)는 때때로 데카르트 곱 계산으로 이어질 수 있습니다. 예상되는 완전 외부 조인. 이 성능 문제는 UDF를 사용하면 임의적이고 비결정적인 함수가 도입되어 최적화 프로그램이 가능한 모든 입력 조합을 평가하지 않고 해당 값을 결정하기 어렵게 만들기 때문에 발생합니다.
해결책
UDF와 달리 완전 외부 조인(t1.foo = t2.bar)의 단순 동등 조건에는 예측 가능한 동작이 있습니다. 옵티마이저는 각각 foo와 bar를 기준으로 t1 및 t2 행을 섞어서 조인을 효율적으로 계산할 수 있습니다.
데카르트 곱 방지
Spark SQL 수정 부족 엔진에는 UDF가 도입하는 데카르트 곱에 대해 외부 조인을 강제하는 간단한 방법이 없습니다. 이러한 제한은 값을 결정하기 위해 가능한 모든 인수 조합을 평가해야 하는 UDF의 고유한 특성에서 비롯됩니다.
위 내용은 Spark SQL UDF가 때때로 외부 조인 대신 데카르트 곱을 발생시키는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!