본문 바로가기

파티션

(3)
파티셔닝 [데이터 중심 애플리케이션 설계 6장] 파티셔닝 확장성 (복제와 비슷) 키-값 데이터 파티셔닝 키 범위 기준 파티셔닝: 특정 알파벳끼리 한 파티션에 넣는 형식 범위 스캔에 유리 특정 기준으로 검색 시, 핫스팟 유발 키의 해시값 기준 파티셔닝: 키를 해시 함수로 변환하여 분산시키는 파티셔닝 파티션끼리 균일하게 분산시키는 데 좋다. 범위 질의를 효과적으로 수행할 수 없다. 카산드라에서는 키의 첫부분만 해싱하고 나머지 컬럼은 SS테이블로 색인을 사용하여 첫번째 컬럼만 고정하면 나머지 컬럼에는 범위 스캔을 효율적으로 하게 한다. 핫스팟 완화: 보통 하나의 키에 데이터가 많은 경우 애플리케이션에서 해결: 키에 임의의 숫자등을 붙여서 분산 시킨다. → 읽기에 오버헤드가 생겨 일부 키에만 적용하는 게 좋다. 파티셔닝과 보조 색인 문서 기반 보조 색인 파티..
[Spark] 파티션 별로 다른 스키마를 가졌을 때 파일 읽어오기 과거 데이터에서 현재는 다른 컬럼이 추가된 상태에서 데이터를 한 번에 읽으려고 /* 데이터 경로가 source/dir/1/ 컬럼수 8개 source/dir/2/ 컬럼수 10개 라고 가정 */ spark.read.orc("source/dir/") 로 읽으려고 하니 8개만 읽어오는 문제가 발생했다. spark.read.option("mergeSchema", "true").orc("Dir/") 로 해서 전체 데이터를 읽어올 수 있었다.
[실수노트] AWS EMR clone 시 문제 (glue 설정) 사내에 AWS EMR을 만드는 스크립트가 있었는데, 중간에 기능 추가를 하려면 다 같이 쓰는 코드를 바꿔야 해서 clone을 하고 중간에 software 등을 추가했는데 clone한 곳에서는 glue 연동이 제대로 되지 않는 문제가 있었다. software 탭에 glue를 옵션으로 추가하는 경우가 있어서 이 부분을 사용하니 잘 됐다. 그런데 기존 데이터를 백필하는 경우에 glue가 기존 partition을 인식을 못 하는 지 기존에 존재하는 모든 partition을 삭제하고 해당한 partition만 만들어졌다. (기존의 파티션 내의 데이터는 delete marker 로 삭제된 상태) 그래서 스크립트 내에서 일단 추가하여 해결은 했는데, clone인데 왜 안 불러오는 설정이 있는 지 잘 이해가 되진 않는..