-
Notifications
You must be signed in to change notification settings - Fork 1
Spark to Snowflake 적재 전략
LSH edited this page Sep 10, 2023
·
3 revisions
- 세션 설정
spark = SparkSession.builder \
.appName("Snowflake Example") \
.config("spark.jars.packages", "net.snowflake:snowflake-jdbc:3.13.22,net.snowflake:spark-snowflake_2.12:2.12.0-spark_3.4") \
.getOrCreate()
- 연결 정보 지정 (sfOptions)
sfOptions = {
"sfURL" : "<account> .snowflakecomputing.com ",
"sfAccount" : "<account>",
"sfUser" : " <사용자>",
"sfPassword": "***",
"sfDatabase": "<데이터베이스>",
"sfSchema": "<스키마>",
"sfWarehouse": "<웨어하우스>",
}
result_df.write \
.format(SNOWFLAKE_SOURCE_NAME) \
.options(**sf_options) \
.option("dbtable", "temp") \
.mode("append") \
.save()
- 컬럼의 형태가 변경되는 것을 방지하기 위해서 sfOptions 옵션을 추가해야 한다
- 위 옵션을 추가할 경우, df 컬럼 순서대로 테이블에 적재된다
- 즉 컬럼 명 자동 매핑 을 지원하지 않고, df와 테이블의 컬럼 갯수가 반드시 일치해야 한다
result_df.write \
.format(SNOWFLAKE_SOURCE_NAME) \
.options(**sf_options) \
.option("dbtable", "temp") \
.mode("overwrite") \
.save()
sfOptions = {
...
"truncate_table": " ON",
"usestagingtable": "OFF",
}