$ ./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 폴더가 있을 것)
이 부분은 필수가 아닐수도 있음
$ 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 작업 그룹 생성 과정에서 만든 것 사용
작업 환경은 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, ...
);