data base에서 바로 spark로 데이터를 불러오자
df2 = spark.read.format("jdbc")\ # jdbc는 maria/ mysql 계열
.option("url", db_url)\
.option("user", "db접근 아이디")\
.option("password", "db패스워드")\
.option("dbtable", "mysql에서는 db이름 psql일때는 스키마의 이름을 쓴다")\
.load()
위의 방식으로 읽거나 혹은 .format 메소드 말고 바로 jdbc 명령어를 사용해서도 읽어 올수 있다.
df = spark.read.jdbc(url=db_url, table="테이블 이름", properties=db_properties)
단 이때 mariadb의 드라이버는 spark가 인식을 못한다.
그러므로 mysql의 드라이버로 접속해준다
두 데이터베이스의 엔진은 같으므로 호환이 된다.
db에서 spark로 데이터를 읽어오기 위해서는 driver가 필수인데 이 driver는 각 db공식 홈페이지에서 다운 받아야 한다.
spark에 driver를 인식시키기 위해
.option("driver", driver_path) #mysql / maria db의 경우 .jar로 끝나는 파일 경로
위 의 방식으로 런타임 환경에서 넣어주거나
$SPARK_HOME/conf
위 경로에 있는 spark-defaults.conf 파일에
spark.driver.extraClassPath driver경로
위와 같이 입력해준다
sparksession이 실행되기 전에 위의 파일을 읽어온다.
즉 option을 런타임에서 굳이 지정해주지 않아도 된다.
물론 다른 db를 사용한다면 그 때 런타임 환경에서 .option을 이용해 덮어쓸 수 있다.
'spark' 카테고리의 다른 글
spark memory 관리 (0) | 2024.02.27 |
---|---|
Repartiotion 방법 (0) | 2024.02.16 |
Spark partition 이해하기 (1) | 2024.02.16 |
자주사용되는 spark config (0) | 2024.02.13 |
Spark 설치하기 in Linux - ubuntu (0) | 2023.12.22 |