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 이상 버전에서는 해당 에러는 더이상 발생하지 않는다 ㅠ
반응형
'빅데이터' 카테고리의 다른 글
아파치 플링크는 2.0 버전부터는 더이상 scala API를 지원하지 않습니다. (0) | 2024.05.10 |
---|---|
JSON은 null을 키값으로 가질 수 있을까? (0) | 2024.01.18 |
아파치 피노(apache pinot) 소개 (0) | 2022.04.22 |
MLOps란 무엇인가? 영상 해설 (0) | 2022.03.17 |
[번역]NVIDIA에서 정의하는 MLOps (0) | 2021.09.29 |
[번역]넷플릭스에서 데이터를 찾는 방법, Data Explorer 소개 (0) | 2021.09.22 |