glue ETL 잡의 오류인지 뭔지 hh:mm:ss 데이터 값이 실제 S3(DL) 에 넣을 때
이유는 모르겠지만 1970-01-01 이 앞에 같이 들어가서 string 값으로 저장되는 문제가 있어서
값을 수정하는데 별것 아닌것에 pyspark 에 대한 지식이 부족해 삽질을 하다가 겨우 해결했다.
일단 import 해주고
import pyspark.sql.functions as F
ing_df = df.toDF()
여기서 df는
from pyspark.context import SparkContext
from awsglue.context import GlueContext
sc = SparkContext()
glueContext = GlueContext(sc)
glueContext.create_dynamic_frame.from_options(connection_type = "postgresql", connection_options = {"location": "[schema]." + table_name, "url":"jdbc:postgresql:[endpoint]:5432/[dbname]", "user": [user_id], "password": [password], "ssl": "false","connectionName":[name]
, "hashexpression": [조건값]
, "hashpartitions":"10"
}, transformation_ctx = [name])
위와 같이 생성된 dynamic_frame 이고 .toDF()는 pyspark df로 변경한다.
해결방법은 간단히 이렇게 했다.
df.withColumn(table[3],F.from_unixtime(F.unix_timestamp(col([컬럼네임]),"yyyy-MM-dd hh:mm:ss.s"),"HH:mm:ss"))
더좋은 방법이 있을지는 모르겠지만 일단 이렇게 해결했다.
glue는 역시 pyspark가 먼저공부하고 시작했어야하는것 같다.
'AWS_Service > Glue' 카테고리의 다른 글
Glue 문법 (0) | 2021.10.18 |
---|---|
Glue Schedules 형식 (0) | 2021.10.18 |