Spark

[Spark] - 정규식을 통한 문자열 처리

jyu_seo_ 2026. 3. 23. 19:45

 

정규식 표현을 통해서 문자열 데이터를 처리하는 방법을 실습을 통해 블로그를 작성해보았습니다.

총 3가지로 나눠서 명령문을 나눠봤는데요.

  • regexp_replace
  • rlike
  • regexp_extract

RegularExpressionReplace, RegularRlike라고 하는 명령어와 RegularExpressionExtract 라고 하는 명령어가 있습니다.

해당 명령어는 실습내용을 통해서 설명하도록하겠습니다.

이번에는 데이터를 다운받아서 csv를 가져와 실습하였습니다. 500redoce는 free이기 때문에 다운받아서 실습을 따라해보시는것도 추천드립니다.

Free Sample Data

 

Free Sample Data

Always test your software with a "worst-case scenario" amount of sample data, to get an accurate sense of its performance in the real world. Files are provided as CSV. Included fields are: First Name, Last Name, Company, Address, City, County (where applic

www.briandunning.com

먼저 appName에 handling string data로 만들어줬습니다.

 

먼저 us-500이라는 csv를 load해서 가져온걸 확인할수있습니다.

data에서 address,city,county,state,zip과 first name을 가지고 실습을 해볼예정이라 select해서 가져와서 정리하였고,

withColumns를 사용해서 expr와 concat을 사용해 rowdata 를 만들었습니다. expr에서는 address와 city 그리고 county와 state 그리고 zip을 사용해서 한덩어리씩 묶어두었습니다.

 

마지막에는 first_name과 address를 10개를 추출한걸 볼수 있습니다.truncate를 줘서 전체 address가 전부 나온걸 확인할수 있습니다.

하지만 위에 데이터 출력한걸 보면 #이라던지 특수문자들이 많이 나와있는걸 확인할수 있습니다.

아래 정규식을 통해서 특수문자를 한번 없애보도록 하겠습니다.

regexp_replace

clean_address라고 하는 새로운 column에 regular_expression을 쓰는데

 

- 첫번째 "" = 찾을값

- 두번째 "" = 교체할 값

 

중괄호를 이용한 정규식 표현입니다.

앞에 hat^을 씌운다음 hat = not이라는 뜻입니다. 앞에 공백을 없애줍니다. 대문자,소문자 알파벳을 찾고 \s를 통해서 나머지 띄어쓰기 공백을 살려줬습니다.

rlike

Sql like문이랑 비슷한 개념이다 filter 조건에 col을 address 안에서 rlike를 사용해 Santa Clara가 있는 address주소를 찾아서 출력하는 모습이다.

 

regexp_extract

 

 

extractor는 추출하다는 뜻이다. 결국 앞에서 했던 raw데이터에 컬럼에 해당되는 값을 특정한 규칙들을 정해서 정규 표현식으로 특정한 값을 컬럼으로 추출해내는 과정입니다. 

 

첫번째는 df_clean으로 만들어주고 해당 컬럼에 대해서 지정해준다음 정규식을통해서 추출해내는 과정입니다.

괄호()를 가지고 그룹을 지을수 있습니다. 그리고 뒤에 정수를 사용할수있는데, 숫자 즉 digit로 존재하는 그룹을 찾아서 

이와같은 방식의 regular Expression에서는 \역슬래시로 digit를 찾을수도있습니다.

'Spark' 카테고리의 다른 글

[Spark] - Json 데이터 다루기(with_Explode)  (0) 2026.03.24
[Spark] - Null값 처리  (0) 2026.03.24
[Spark] - Spark 기본 동작  (0) 2026.03.23
[Spark] - Catalyst & Tungsten  (0) 2026.03.23
[Spark] - Spark 소개 및 분산스파크 구조  (0) 2026.03.22