BigData/Spark & Spark Tuning
HIVE QL(HQL) VS Pyspark (REGEXP_REPLACE 구문 차이정리)
스파이디웹
2021. 8. 19. 15:03
728x90
프로젝트 중 ,HIVEQL -> PySpark 작업중에 HIVEQL속에 REGEXP_REPLACE 구문 및, RLIKE 구문이 있었습니다.
거기에서 발생한 issue를 정리하려고 합니다.
1.REGEXP_REPLACE
이놈이 문제였습니다.
HQL에는 REGEXP_REPLACE(컬럼,'\(\\d+\)\.\(\\d+\)\.\(\\d+\)\[-|.]\(\\d+\)',$1)와 같은 구문이 있었고,
처음에는 그대로 복붙하면 spark에서도 먹힐 줄 알았습니다.
그대로 사용해서 실행시켜보니, 오류는 나지 않았지만, 데이터가 0건으로 조회되었습니다.
말그대로 오류는 내지 않지만 REGEXP_REPLACE도 제대로 먹지 않았던 것 입니다.
여러 시도 끝에
SPARK에서는 REGEXP_REPLACE(컬럼,'(\d+)\.(\d+)\.(\d+)[-|.](\d+)',$1)
처럼 썼을 때 제대로 먹었던 것을 확인 할 수 있었습니다.
2.RLIKE
이건 사실 에러도 안났고 제대로 먹었는데
동일 하게 복붙해서도 먹혔습니다.
HQL에서는 RLIKE('^[0-9]*$')인 것을
SPARK에서도 rlike('^[0-9]*$') 처럼 사용
728x90