5장. 데이터 파티셔닝
이 작품은 AI를 사용하여 번역되었습니다. 여러분의 피드백과 의견을 환영합니다: translation-feedback@oreilly.com
파티셔닝은 "나누거나 분리하는 경계를 만들어 분리하는 행위"로 정의됩니다. 데이터 파티셔닝은 쿼리 실행 성능을 개선하기 위해 Spark, Amazon Athena, Google BigQuery와 같은 도구에서 사용됩니다. 빅데이터 솔루션을 확장하기 위해 데이터를 파티션으로 나누어 개별적으로 그리고 병렬로 관리, 액세스, 실행할 수 있습니다.
이 책의 이전 장에서 설명한 대로, Spark는 데이터를 파티션이라고 하는 작은 덩어리로 분할한 다음 작업자 노드의 실행기를 사용하여 이러한 파티션을 병렬 방식으로 처리합니다(여러 파티션을 동시에 처리할 수 있음). 예를 들어, 입력에 1,000억 개의 레코드가 있는 경우 Spark는 이를 10,000개의 파티션으로 분할할 수 있으며 각 파티션에는 약 1,000만 개의 요소가 포함됩니다:
-
총 기록 수 100,000,000,000
-
파티션 수 10,000
-
파티션당 요소 수입니다: 10,000,000
-
가능한 최대 병렬 처리: 10,000
참고
기본적으로 Spark는 Java의 Object.hashCode() 함수를 사용하는 HashPartitioner 를 사용하여 해시 기반 파티셔닝을 구현합니다.
데이터를 분할하면 관리성과 확장성을 개선하고, 경합을 줄이며, 성능을 최적화할 수 있습니다. 전 세계 모든 국가(7개 대륙, 195개국)의 도시에 대한 시간별 기온 데이터가 있고, 특정 대륙, 국가 또는 국가 집합에 대한 데이터를 쿼리하고 분석하는 것이 목표라고 가정해 보겠습니다. 데이터를 적절하게분할하지 않으면 각 쿼리마다 원하는 결과를 얻기 위해 전체 데이터 집합에 매퍼와 리듀서를 로드하고, 읽고, 적용해야 합니다. 대부분의 쿼리에는 실제로 데이터의 하위 집합만 필요하기 때문에 이는 매우 효율적이지 않습니다. 훨씬 더 빠른 접근 방식은 필요한 데이터만 로드하는 것입니다.
Spark에서 데이터 파티셔닝은 주로 작업을 독립적으로 실행할 수 있도록 병렬 처리를 목적으로 수행되지만, Amazon Athena 및 Google BigQuery와 같은 쿼리 도구에서는 전체 데이터 세트가 아닌 데이터의 일부를 분석할 수 있도록 하는 데 그 목적이 있습니다. PySpark는 이러한 도구가 쿼리를 효율적으로 수행할 수 있도록 열 이름별로 데이터 프레임을 물리적으로 매우 쉽게 분할할 수 있게 해줍니다.
파티션 소개
데이터를 파티셔닝하면 각 쿼리에서 스캔하는 데이터의 양을 제한하여 성능을 개선하고 비용을 절감할 수 있습니다. 예를 들어, 파티셔닝을 위해 Spark와 Hive를 활용하는 Amazon Athena를 사용하면 어떤 키로도 데이터를 파티션할 수 있습니다(BigQuery도 동일한 기능을 제공합니다). 따라서 앞서 예로 든 날씨 데이터의 경우 모든 국가에 ...