Snowpark Java로 쿼리를 분석하고 문제를 해결하기¶
이 항목에서는 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)
--------------------------------------------
DataFrame 실행이 트리거된 후 Classic Console 의 History 페이지에서 쿼리 진행 상황을 확인할 수 있습니다.
Query Tag 열에서는 이 쿼리를 트리거한 코드의 함수 이름과 줄 번호를 찾을 수 있습니다.
로깅 설정 변경하기¶
기본적으로 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
이 파일을 클래스 경로에 넣으십시오. Maven 디렉터리 레이아웃을 사용하는 경우, 파일을 src/main/resources/
디렉터리에 넣으십시오.
java.lang.OutOfMemoryError 예외¶
java.lang.OutOfMemoryError
예외가 발생하면 JVM의 최대 힙 크기를 늘리십시오(예: -J-Xmxmaximum_size
플래그를 통해).
Java 17의 명명되지 않은 모듈 오류¶
Java 17에서 Snowpark Java 또는 Scala 클라이언트를 실행할 때 다음 오류가 표시될 수 있습니다.
java.base does not "opens java.nio" to unnamed module
이는 Snowpark가 Java 9 이후 기본적으로 노출되지 않는 내부 Java API를 사용하는 Apache Arrow 커넥터 를 사용하기 때문입니다.
이 오류를 해결하려면 애플리케이션을 실행할 때 또는 시스템의 환경 변수에서 다음 매개 변수를 명령줄 인자로 설정하십시오.
--add-opens=java.base/java.nio=ALL-UNNAMED
참고
Snowpark API는 다음 버전의 Java를 지원합니다.
11.x
17.x(이 함수에 대한 미리 보기 지원은 모든 계정에서 사용할 수 있습니다.)
애플리케이션 실행 시 인자 설정하기¶
애플리케이션을 실행할 때 명령줄에서 이 인자를 설정할 수 있습니다.
예를 들어, java
명령을 호출할 때 다음과 같이 --add-opens=java.base/java.nio=ALL-UNNAMED
를 추가할 수 있습니다.
java --add-opens=java.base/java.nio=ALL-UNNAMED -jar my-snowpark-app.jar.
RSA 개인 키 인증도 사용하는 경우 다음 예와 같이 sun.security.util
도 허용해야 합니다.
java --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/sun.security.util=ALL-UNNAMED -jar my-snowpark-app.jar
매개 변수를 환경 변수로 설정하기¶
시스템의 환경 변수에서 매개 변수를 설정할 수 있습니다. 환경 변수 설정에 대한 지침은 운영 체제 설명서를 참조하십시오.
다음 Unix 기반 예에서처럼 JDK_JAVA_OPTIONS
환경 변수를 생성하거나 업데이트합니다.
export JDK_JAVA_OPTIONS="--add-opens=java.base/java.nio=ALL-UNNAMED"
RSA 개인 키 인증도 사용하는 경우 다음 예와 같이 sun.security.util
도 허용해야 합니다.
export JDK_JAVA_OPTIONS="--add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/sun.security.util=ALL-UNNAMED"