pyspark에서 Spark를 실행하려면 함께 작동하는 데 두 가지 구성 요소가 필요합니다.
pyspark
파이썬 패키지
- JVM의 Spark 인스턴스
spark-submit 또는 pyspark로 항목을 시작할 때이 스크립트는 둘 다 처리합니다. 즉, 스크립트가 pyspark를 찾을 수 있도록 PYTHONPATH, PATH 등을 설정하고, 매개 변수에 따라 구성하여 Spark 인스턴스도 시작합니다. , 예 : --master X
또는 이러한 스크립트를 우회하고 .NET과 같은 Python 인터프리터에서 직접 Spark 애플리케이션을 실행할 수 있습니다 python myscript.py
. 이것은 스파크 스크립트가 더 복잡해지기 시작하고 결국 자체 인수를받을 때 특히 흥미 롭습니다.
- Python 인터프리터에서 pyspark 패키지를 찾을 수 있는지 확인합니다. 이미 논의했듯이 PYTHONPATH에 spark / python dir을 추가하거나 pip install을 사용하여 pyspark를 직접 설치합니다.
- 스크립트에서 스파크 인스턴스의 매개 변수를 설정합니다 (pyspark에 전달되는 데 사용 된 것).
- 일반적으로 --conf로 설정하는 스파크 구성의 경우 SparkSession.builder.config의 구성 개체 (또는 문자열 구성)로 정의됩니다.
- 현재 주요 옵션 (예 : --master 또는 --driver-mem)의 경우 PYSPARK_SUBMIT_ARGS 환경 변수에 작성하여 설정할 수 있습니다. 더 깨끗하고 안전하게 만들기 위해 Python 자체에서 설정할 수 있으며 Spark는 시작할 때 읽을 수 있습니다.
getOrCreate()
빌더 개체에서 호출하기 만하면되는 인스턴스를 시작 합니다.
따라서 스크립트는 다음과 같을 수 있습니다.
from pyspark.sql import SparkSession
if __name__ == "__main__":
if spark_main_opts:
# Set main options, e.g. "--master local[4]"
os.environ['PYSPARK_SUBMIT_ARGS'] = spark_main_opts + " pyspark-shell"
# Set spark config
spark = (SparkSession.builder
.config("spark.checkpoint.compress", True)
.config("spark.jars.packages", "graphframes:graphframes:0.5.0-spark2.1-s_2.11")
.getOrCreate())