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