빅데이터(BigData)/Spark

spark에서 oracle로 데이터 입력 시 ORA-01861 오류가 발생할 때

leebaro 2021. 1. 18.
728x90

pyspark에서 oracle로 데이터를 넣을 때 아래과 같은 에러가 발생할 때가 있다.

 

ORA-01861 : 리터럴이 형식 문자열과 일치하지 않음

 

직접적인 원인은 spark의 데이터 타입과 오라클의 데이터 타입이 일치하지 않는 경우에 발생한다. 필자와 같은 경우에는 날짜타입의 컬럼일 때 위와 같은 에러가 발생했다.

 

이 문제를 해결하기 위해서는 spark에서 data frame의 컬럼의 데이터 타입을 변경해야 한다.

 

수정 전에 DF의 컬럼 타입을 보면 아래와 같다.

 

DataFrame[visit_dt : string]

 

spark에서 날짜타입이 string일 때 timestamp로 변경하면 oracle의 컬럼이 date 타입일 때 문제가 해결된다. 데이터 타입을 수정하는 방법은 아래와 같다.

df_rslt = df_mt_cust_grp_recm_prd.withColumn("visit_dt",to_timestamp(col("visit_dt")))

 

수정 후 컬럼 타입은 아래와 같이 변경되고 문제 없이 오라클에 입력된다.

DataFrame[visit_dt : timestamp]
728x90