더북(TheBook)

5.4.2.6 jdbc 메서드로 관계형 데이터베이스에 데이터 저장

DataFrameWriterjdbc 메서드를 사용해 DataFrame 내용을 관계형 데이터베이스에 저장할 수 있다. jdbc 메서드는 URL 문자열, 테이블 이름, java.util.Properties 객체를 받는다. Properties 객체에는 데이터베이스 접속에 필요한 여러 속성(주로 사용자 이름과 암호)을 전달한다. 예를 들어 다음 코드는 postsDf DataFrame 데이터를 postgresrv 서버의 mydb 데이터베이스 아래에 posts라는 PostgreSQL 테이블로 저장한다.

val props = new java.util.Properties()
props.setProperty("user", "user")
props.setProperty("password", "password")
postsDf.write.jdbc("jdbc:postgresql://postgresrv/mydb", "posts", props)

 

postsDf의 모든 파티션이 관계형 데이터베이스와 연결해 각자 데이터를 저장하기 때문에, DataFrame의 파티션이 너무 많으면 데이터베이스에 부담을 줄 수 있다. 또 모든 실행자가 데이터베이스 접속에 필요한 JDBC 드라이버에 접근할 수 있어야 한다. 실행자의 클래스패스는 스파크 spark.executor.extraClassPath 환경 매개변수로 설정할 수 있다(매개변수를 설정하는 방법은 10장을 참고하자).

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.