Snowpark Scala로 쿼리를 분석하고 문제를 해결하기

이 항목에서는 Snowpark 라이브러리로 작업할 때의 쿼리 분석 및 문제 해결에 대한 몇 가지 지침을 제공합니다.

이 항목의 내용:

Snowpark에서 쿼리 실행 계획 보기

DataFrame의 평가 계획을 검사하려면 DataFrame의 explain 메서드를 호출하십시오. 이 작업은 DataFrame을 평가하는 데 사용되는 SQL 문을 출력합니다. SQL 문이 하나만 있는 경우, 이 메서드는 이 문에 대한 논리적 계획도 출력합니다.

----------DATAFRAME EXECUTION PLAN----------
Query List:
0.
SELECT
  "_1" AS "col %",
  "_2" AS "col *"
FROM
  (
    SELECT
      *
    FROM
      (
        VALUES
          (1 :: int, 2 :: int),
          (3 :: int, 4 :: int) AS SN_TEMP_OBJECT_639016133("_1", "_2")
      )
  )
Logical Execution Plan:
 GlobalStats:
    partitionsTotal=0
    partitionsAssigned=0
    bytesAssigned=0
Operations:
1:0     ->Result  SN_TEMP_OBJECT_639016133.COLUMN1, SN_TEMP_OBJECT_639016133.COLUMN2
1:1          ->ValuesClause  (1, 2), (3, 4)

--------------------------------------------
Copy

DataFrame 실행이 트리거된 후 Classic Console 의 History History tab 페이지에서 쿼리 진행 상황을 확인할 수 있습니다.

Query Tag 열에서는 이 쿼리를 트리거한 코드의 함수 이름과 줄 번호를 찾을 수 있습니다.

Snowpark request in the History page in the Classic Console

문제 해결

로깅 설정 변경

기본적으로 Snowpark 라이브러리는 INFO 수준 메시지를 stdout에 로그합니다. 로깅 설정을 변경하려면 simplelogger.properties 파일을 만들고 해당 파일에서 로거 속성을 구성합니다. 예를 들어, 로그 수준을 DEBUG 로 설정하려면:

# simplelogger.properties file (a text file)
# Set the default log level for the SimpleLogger to DEBUG.
org.slf4j.simpleLogger.defaultLogLevel=debug
Copy

이 파일을 클래스 경로에 넣으십시오. Maven 디렉터리 레이아웃을 사용하는 경우, 파일을 src/main/resources/ 디렉터리에 넣으십시오.

java.lang.OutOfMemoryError 예외

java.lang.OutOfMemoryError 예외가 발생하면 JVM의 최대 힙 크기를 늘리십시오.

Scala REPL을 사용 중이고 최대 힙 크기를 늘려야 하는 경우, run.sh 셸 스크립트(아카이브 파일에 제공됨)를 편집하고 -J-Xmxmaximum_size 플래그를 scala 명령에 추가하십시오. 다음 예에서는 최대 힙 크기를 4GB로 늘립니다.

scala -J-Xmx4G ...
Copy