다음을 통해 공유


Spark 단계 높은 I/O

다음으로, 가장 긴 단계의 I/O 통계를 다시 살펴봅니다.

긴 단계 입력/출력

높은 I/O란?

I/O 열에 얼마나 많은 데이터가 있어야 높은 것으로 간주되나요? 이를 파악하려면 먼저 지정된 열 중에서 가장 높은 숫자로 시작합니다. 그런 다음 모든 작업자에 걸쳐 있는 총 CPU 코어 수를 고려합니다. 일반적으로 각 코어는 초당 약 3MB를 읽고 쓸 수 있습니다.

가장 많은 양의 I/O 열을 클러스터 작업자 코어 수로 나눈 후, 이를 초 단위의 기간으로 다시 나누십시오. 결과가 약 3MB이면 I/O가 바인딩된 것일 수 있습니다. 그것은 높은 I/O가 될 것입니다.

고입력

스테이지에 많은 입력이 표시되는 경우 이는 데이터를 읽는 데 많은 시간을 소비한다는 것을 의미합니다. 먼저 이 단계에서 읽고 있는 데이터를 식별합니다. Spark의 DAG에서 비용이 많이 드는 읽기 식별을 참조하세요.

특정 데이터를 식별한 후 읽기 속도를 높이기 위한 몇 가지 방법은 다음과 같습니다.

높은 출력

스테이지에서 많은 출력이 표시되는 경우 이는 데이터를 작성하는 데 많은 시간을 소비한다는 것을 의미합니다. 이 문제를 해결하는 몇 가지 방법은 다음과 같습니다.

고급 셔플

Databricks는 Spark가 최적의 순서 섞기 파티션 수를 자동으로 선택할 수 있도록 설정하는 spark.sql.shuffle.partitions=auto 것이 좋습니다. 순서 섞기에 익숙하지 않다면 , 지금이 배울 시간입니다.

고성능 I/O 지원 안 함

모든 열에서 높은 I/O가 표시되지 않으면 더 깊이 조사해야 합니다. I/O가 거의 없는 느린 Spark 단계 참조하세요.