의료 및 생명 과학 조직은 전통적인 구조화된 데이터를 훨씬 넘어서는 다양한 데이터 형식을 다룹니다. DICOM과 같은 의료 영상 표준, 독점적인 실험실 기기, 유전체 시퀀싱 출력, 특수한 생물의학 파일 형식은 전통적인 데이터 플랫폼에 중대한 도전을 제시합니다. Apache Spark™는 대략 10가지 표준 데이터 소스 유형에 대해 강력한 지원을 제공하는 반면, 의료 분야는 수백 가지의 특수한 형식과 프로토콜에 대한 접근이 필요합니다.
CT, X-레이, PET, 초음파, MRI 등 다양한 방식의 의료 이미지는 정형외과부터 종양학, 산부인과에 이르기까지 건강관리의 많은 진단 및 치료 과정에서 필수적입니다. 이러한 의료 이미지가 압축되거나, 보관되거나, 특수한 파이썬 라이브러리가 필요한 독점 형식으로 저장될 때 문제는 더욱 복잡해집니다.
DICOM 파일에는 풍부한 메타데이터가 포함된 헤더 섹션이 있습니다. DICOM 태그에는 4200개 이상의 표준이 정의되어 있습니다. 일부 고객은 사용자 정의 메타데이터 태그를 구현합니다. “zipdcm” 데이터 소스는 이러한 메타데이터 태그의 추출 속도를 높이기 위해 구축되었습니다.
헬스케어 조직들은 종종 의료 이미지를 수천 개의 DICOM 파일이 포함된 압축 ZIP 아카이브에 저장합니다. 이러한 아카이브를 대규모로 처리하는 것은 일반적으로 여러 단계를 필요로 합니다:
Databricks는 수백 가지 이미지 형식을 대규모로 쉽게 통합할 수 있게 하는 솔루션 가속기, dbx.pixels를 출시했습니다. 그러나 디스크 I/O 작업과 임시 파일 처리로 인해 프로세스가 여전히 느릴 수 있습니다.
새로운 Python Data Source API 는 건강 관리 특화 Python 라이브러리를 Spark의 분산 처리 프레임워크에 직접 통합함으로써 이 문제를 해결합니다. 먼저 파일을 압축 해제한 다음 사용자 정의 함수 (UDFs)로 처리하는 복잡한 ETL 파이프라인을 구축하는 대신, 압축된 의료 이미지를 한 단계에서 처리할 수 있습니다.
Python Data Source API를 사용하여 ZIP 파일 추출과 DICOM 처리를 결합한 사용자 정의 데이터 소스는 전통적인 접근 방식에 비해 7배 빠른 처리 를 보여줍니다.
”zipdcm” 리더는 1,416개의 zipfile 아카이브를 처리하였고, 이는 총 107,000개 이상의 DICOM 파일을 포함하고 있으며, DICOM 파일 당 2.43초의 코어 시간이 소요되었습니다. 독립적인 테스터들은 10배 빠른 성능을 보고했습니다. 사용된 클러스터는 각각 8개의 v-cores를 가진 두 개의 작업 노드를 가지고 있었습니다. ”zipdcm” 리더를 실행하는 데 걸린 실제 시간은 단 3.5분이었습니다.
소스 데이터를 압축된 상태로 두고, 소스 zip 아카이브를 확장하지 않음으로써, 우리는 놀라운 (4TB 압축 해제 vs 70GB 압축) 57배 낮은 클라우드 저장 비용을 실현했습니다.
여기에는 github에서 찾을 수 있는 DICOM 이미지가 포함된 ZIP 파일을 처리하는 사용자 정의 데이터 소스를 구축하는 방법이 있습니다.
