본문 바로가기

빅데이터

trino에서 java.sql.SQLException: Unrecognized connection property 'url' 에러가 나는 이유와 해결 방법

spark jdbc를 통해 trino를 접근하기 위해 아래와 같은 코드를 짤 수 있다.

import org.apache.spark.sql.{DataFrame, SparkSession}
import java.util.Properties

// Spark 세션 생성
val spark = SparkSession.builder()
  .appName("Spark Trino JDBC Example")
  .getOrCreate()

// JDBC URL 설정
val jdbcUrl = "jdbc:trino://<trino-host>:<port>/<catalog>/<schema>"

// Trino JDBC 속성 설정
val connectionProperties = new Properties()
connectionProperties.setProperty("user", "<your-user>")
connectionProperties.setProperty("password", "<your-password>")
connectionProperties.setProperty("driver", "io.trino.jdbc.TrinoDriver")
connectionProperties.setProperty("SSL", "true") // 필요 시 SSL 활성화

// Trino 테이블 또는 SQL 쿼리 설정
val hiveTable = "(SELECT * FROM your_table LIMIT 10) AS tmp"

// DataFrame 생성 및 데이터 로드
val dfJdbc: DataFrame = spark.read
  .jdbc(jdbcUrl, hiveTable, connectionProperties)

// 결과 출력
dfJdbc.show()

문제는 실행했을 때 아래와 같은 에러가 발생할 경우이다.

java.sql.SQLException: Unrecognized connection property 'url'.

위 에러는 url이라는 key가 trino에 인입되어 발생하는 에러인데, trino에서는 용인되지 않는 설정값이 추가되면 warning도 아니고 에러로 뱉어버린다.......

 

spark에서는 url이라는 key에 value를 jdbc:trino:// 로 시작되는 값을 강제 주입하기 때문인데, 이는 3.2.x대 버전까지 이어져 왔다. 

 

해결방법

이후 https://issues.apache.org/jira/browse/SPARK-36163 에서 해당 문제를 해결하고자 했고, 그 결과로 3.3.x 이상 버전에서는 해당 에러는 더이상 발생하지 않는다 ㅠ

 

반응형