Home Python to RDD communications
Post
Cancel

Python to RDD communications

PySpark Overview

img

PySpark은 Spark의 Java API를 기반으로 구현되었다. 데이터는 Python에서 처리되고 JVM에서 cache/shuffle 된다.

RDD API 실행 과정

  1. Python driver program에서, SparkContext는 Py4J 라이브러리를 사용하여 JavaSparkContext를 사용하는 JVM을 실행한다.
  2. Py4J는 오직 Python과 Java SparkContext간의 로컬 커뮤니케이션 용도에만 사용된다. Python RDD transformation은 Java에 있는 PythonRDD 객체들에 대한 transformation으로 맵핑된다.
  3. Python RDD 객체들이 워커노드로 푸시된다. 워커노드에서는 PythonRDD 객체들은 Python subprocess를 실행하고 pipe를 사용하여 통신한다. 결과적으로 사용자의 코드와 데이터가 Python에서 처리된다.

Python RDD communications

img

이 방법이 PySpark이 여러 워커에 있는 Python subprocesses에게 데이터 처리를 분산시키지만, JVM과 Python Process간에 context switching이 많이 일어난다.

출처

Spark 기반에서 Python과 Scala API의 성능 비교 분석 https://subscription.packtpub.com/book/big_data_and_business_intelligence/9781786463708/3/ch03lvl1sec17/python-to-rdd-communications

This post is licensed under CC BY 4.0 by the author.

Trending Tags