본문 바로가기
쓰레기같은 주소에서 시군구 추출하기 위치기반 개인정보 테이블의 가명화를 위해 시군구만 짤라내서 필드를 만들어야 하는데 주소 형식이 제각각이다. 이를테면 로데이터의 '도로명주소' 필드는 아래와 같이 생겼다. 대구 달성군 논공읍 금포로 75-20서울특별시강남구선릉로 221길서울 구로구 구로동로 148 여기서 나는 아래와 같은 값만 얻고자 한다. 대구 달성군서울특별시강남구서울 구로구 보다 공수가 많이 들지만 정확한 방법( 밖으로 꺼내서 전국 시군구 매핑과 대조하는 등 ) 도 있겠지만노가다 최소화(와 정규표현식 연습)를 위해 DB 안에서 REGEX 쿼리만으로 해결해보았다.SELECT REGEXP_SUBSTR('대구 달성군 논공읍 금포로 75-20', '(서울|대구).*?.([시군구])',1, 1); '시도 부분' 과 '시도의 뒷부분' 으로 값을 .. 2024. 10. 15.
온라인 카드결제 과정, PG사 저번에 구독 결제 관련 쿼리 작성 중 취소된 결제 건을 발라내고자 PG사 결제 테이블을 참조해서 메챠쿠챠 해서 쿼리를 한다. 어제 만났던 어떤 아저씨는 토이프로젝트로 앱 만들고 카드 통해서 돈 받으려면 법인사업자 등록하고 나서 PG사랑 계약해야지 카드결제 도입할 수있어서 비영리단체 등록을 했었다고 한다. 그래서 PG사와 카드사가 무엇인지 앱결제에서 왜 필요한지 궁금해졌다.카드결제의 과정1. 소비자가 카드 결제 버튼 클릭 -> 주문서 작성2. 인증-승인-매입 - 인증 : (카드사 번호, CVC, 유효기간) -> 카드결제 가능한지? 결제하는 사람 카드 보유자인지? - 승인 : 카드사가 소비자의 카드에서 물건 금액 차감      PG사가 VAN사를 통해 결제요청 정보를 카드사에 전달해 카드의 한도를 차감 - .. 2024. 9. 8.
[Spark] Join 최적화로 bucketing 쓸때 주의사항 스파크에서 조인 수행 최적화 목적으로 Bucketing을 활용한다.이때 주의할 점이 있다. 두 테이블 모두 같은 수의 버킷으로 bucketing두 테이블은 동일한 열에 bucketing목표 : 셔플/교환을 줄이고 pre- shuffled data 사용하여 테이블을 join 하기두 테이블이 이미 partitioned 되어 있고, shuffle할 필요가 없음을 catalyst optimizer가 깨닫게 만들기 즉 물리적 실행계획상에* SortMergeJoin을 적용하기* 테이블에 broadcast / Hash join 이 적용되지 않게 만들기  Bad CaseNon- bucketed 와 Bucketed를 Join하면 어짜피 교환작업 수행됨2개의 bucketed table을 조인하더라도, bucket colu.. 2024. 7. 7.
[Spark] shuffle 연산 & bucketing 하는 이유 Spark의 셔플링이란데이터 그룹화/집계 위해 클러스터 노드 전체에 데이터 재분배하는 데 사용데이터를 더 작은 청크로 분할 / 네트워크 전체에 데이터 섞음 / 새로운 청크 집합으로 다시 분할셔플 함수 예제Map Side Shuffle데이터 전송 전에 단일 노드에서 데이터 셔플val data = sc.parallelize(Seq(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)) // Sample dataval mappedData = data.map(x => (x % 2, x))mappedData.collect().foreach(println)Reduce Side Shuffle데이터 전송 전에 단일 노드에서 데이터 셔플val reducedData = mappedData.reduceByKey((x, y.. 2024. 7. 7.