2장. 행동하는 혁신
이 작품은 AI를 사용하여 번역되었습니다. 여러분의 피드백과 의견을 환영합니다: translation-feedback@oreilly.com
이 장에서는 데이터 요약 디자인 패턴의 맥락에서 가장 중요한 Spark 변환(매퍼와 리듀서)을 살펴보고, 대상 문제에 대해 특정 변환을 선택하는 방법을 살펴봅니다.
보시다시피 주어진 문제 (여기서는 DNA 염기 수 문제를 사용하겠습니다)에 대해 서로 다른 Spark 변환을 사용하는 여러 가지 가능한 PySpark 솔루션이 있지만 이러한 변환의 효율성은 구현 및 셔플 프로세스 (키별로 값 그룹화가 발생하는 경우)로 인해 다릅니다. DNA 염기 수 문제는 고전적인 단어 수 문제(파일/문서 세트에서 고유한 단어의 빈도 찾기)와 매우 유사하지만, DNA 염기 수에서는 DNA 문자의 빈도를 찾는다는 차이점이 있습니다 (A, T, C,G).
이 문제를 선택한 이유는 이 문제를 풀면서 많은 양의 정보(여기서는 DNA 데이터 문자열/서열)를 훨씬 더 작은 유용한 정보(DNA 문자의 빈도)로 압축하는 데이터 요약에 대해 배울 수 있기 때문입니다.
이 장에서는 DNA 염기 수 문제를 해결하기 위해 서로 다른 매퍼와 환원법을 사용하는 PySpark의 세 가지 완전한 엔드투엔드 솔루션을 제공합니다. 이들 간의 성능 차이에 대해 논의하고 데이터 요약 디자인패턴을 살펴봅니다.
DNA 염기 수 예시
이 장의 예제의 목적은 주어진 DNA 문자열/서열 세트에서 DNA 염기 수를 세는 것입니다. DNA, 생물학 또는 유전체학 전문가가 아니어도 이 예제를 이해할 수 있으니 걱정하지 마세요. 기본적인 내용만 알아두면 충분히 이해할 수 있을 것입니다.
인간의 DNA는 약 30억 개의 염기로 구성되어 있으며, 그 중 99% 이상이 모든 사람에게 동일합니다. DNA 염기 수를 이해하려면 먼저 DNA 문자열을 이해해야 합니다. DNA 염기는 아데닌(A), 시토신(C), 구아닌(G), 티민(T)을 나타내는 알파벳 {A, C, G, T} 으로 구성됩니다. 우리의 DNA는 일련의 DNA 문자열로 구성되어 있습니다. 우리가 답하고자 하는 질문은 DNA 문자열 세트에서 각 염기 문자가 몇 번이나 나타나는지입니다. 예를 들어 "AAATGGCATTA" 라는 DNA 문자열이 있는데 이 문자열에서 염기 A가 몇 번 나오는지 묻는다면 답은 5이고, 염기 T 가 몇 번 나오는지 묻는다면 답은 3입니다. 따라서 대소문자를 무시하고 각 염기의 발생 횟수를 세고 싶습니다. DNA 기계는 대문자와 소문자를 생성할 수 있으므로 모두 소문자로 변환합니다.
이 문제에 대해 강력하고 효율적인 Spark 변환의 다양한 조합을 사용하여 세 가지 다른 솔루션을 제공하겠습니다. 모든 솔루션이 동일한 결과를 생성하지만 사용된 변환으로 인해 성능이 달라집니다.
그림 2-1은 Spark를 사용하여 DNA 염기 수 문제를 해결하는 과정을 보여줍니다. 각 솔루션에 대해 PySpark ...