spark redshift

이상민·2023년 5월 26일
0

spark

목록 보기
15/17

package 설치

$ ./bin/spark-submit --packages com.databricks:spark-avro_2.11:3.0.0,com.databricks:spark-redshift_2.11:2.0.1,com.databricks:spark-csv_2.11:1.5.0 test.py

databricks에 관련된 package를 설치한다.
spark 폴더에서 실행(폴더 내부에 bin 폴더가 있을 것)

jar 파일 다운로드

이 부분은 필수가 아닐수도 있음

$ wget https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/1.2.36.1060/RedshiftJDBC42-no-awssdk-1.2.36.1060.jar

$ wget "https://s3.amazonaws.com/redshift-downloads/drivers/RedshiftJDBC4-1.2.1.1001.jar"

redshift 관련 jar 파일을 다운 받고

conf.setAll([('spark.driver.extraClassPath', '/skybluelee/spark3/jars/RedshiftJDBC4-1.2.1.1001.jar:/skybluelee/spark3/jars/RedshiftJDBC42-no-awssdk-1.2.36.1060.jar')])

conf에 extraClassPath로 경로를 지정한다.
conf에 대한 설정은 spark s3 참조.

실행

%pyspark
df_redshift_test.write.format('jdbc').options(
      url='JDBC URL',	  
      driver='com.amazon.redshift.jdbc42.Driver',
      dbtable='schema.table',
      user='',
      password='').mode('overwrite').save() 

JDBC URL은 redshift -> 작업 그룹에서 확인 가능
dbtable은 스키마.테이블로 미리 create table로 작업해야 함
user, password는 redshift 작업 그룹 생성 과정에서 만든 것 사용

redshift 준비

작업 환경은 colab

!pip install SQLAlchemy==1.4.47
%load_ext sql

%%sql 
postgresql://user:password@엔드포인트
# 엔드포인트는 redshift -> 작업 그룹에서 확인 가능

create schema <schema name> authorization <user name>;

DROP TABLE IF EXISTS <schema name>.<table name>;
CREATE TABLE <schema name>.<table name>(
    data int, ...
);

0개의 댓글