[python] 파이썬 셸에서 pyspark 가져 오기

이것은 답변이없는 다른 포럼에있는 다른 사람의 질문의 사본이므로 동일한 문제가 있으므로 여기서 다시 질문 할 것이라고 생각했습니다. ( http://geekple.com/blogs/feeds/Xgzu7/posts/351703064084736 참조 )

내 컴퓨터에 Spark가 제대로 설치되어 있으며 ./bin/pyspark를 Python 인터프리터로 사용할 때 오류없이 pyspark 모듈로 Python 프로그램을 실행할 수 있습니다.

그러나 일반 Python 셸을 실행하려고 할 때 pyspark 모듈을 가져 오려고하면이 오류가 발생합니다.

from pyspark import SparkContext

그리고 그것은 말한다

"No module named pyspark".

이 문제를 어떻게 해결할 수 있습니까? Python이 pyspark 헤더 / 라이브러리 / 등을 가리 키도록 설정해야하는 환경 변수가 있습니까? 내 Spark 설치가 / spark / 인 경우 어떤 pyspark 경로를 포함해야합니까? 아니면 pyspark 프로그램은 pyspark 인터프리터에서만 실행할 수 있습니까?



답변

다음은 간단한 방법입니다 (작동 방식에 대해 신경 쓰지 않으면 !!!).

findspark 사용

  1. 파이썬 셸로 이동

    pip install findspark
    
    import findspark
    findspark.init()
  2. 필요한 모듈 가져 오기

    from pyspark import SparkContext
    from pyspark import SparkConf
  3. 끝난!!!


답변

이러한 오류가 인쇄되는 경우 :

ImportError : py4j.java_gateway라는 모듈이 없습니다.

$ SPARK_HOME / python / build를 PYTHONPATH에 추가하십시오.

export SPARK_HOME=/Users/pzhang/apps/spark-1.1.0-bin-hadoop2.4
export PYTHONPATH=$SPARK_HOME/python:$SPARK_HOME/python/build:$PYTHONPATH


답변

pyspark bin이 LOADING python이고 올바른 라이브러리 경로를 자동으로로드하는 것으로 나타났습니다. $ SPARK_HOME / bin / pyspark 확인 :

# Add the PySpark classes to the Python path:
export PYTHONPATH=$SPARK_HOME/python/:$PYTHONPATH

이 줄을 .bashrc 파일에 추가했고 이제 모듈을 올바르게 찾았습니다!


답변

py 파일을 다음과 같이 실행 python filename.py
하지 마십시오. 대신 다음 을 사용하십시오.spark-submit filename.py


답변

SPARK 경로와 Py4j 경로를 내 보내면 작동하기 시작했습니다.

export SPARK_HOME=/usr/local/Cellar/apache-spark/1.5.1
export PYTHONPATH=$SPARK_HOME/libexec/python:$SPARK_HOME/libexec/python/build:$PYTHONPATH
PYTHONPATH=$SPARK_HOME/python/lib/py4j-0.8.2.1-src.zip:$PYTHONPATH
export PYTHONPATH=$SPARK_HOME/python:$SPARK_HOME/python/build:$PYTHONPATH

따라서 Python 셸을 실행할 때마다 입력하지 않으려면 .bashrc파일에 추가 할 수 있습니다.


답변

Mac에서는 Homebrew를 사용하여 Spark (공식 “apache-spark”)를 설치합니다. 그런 다음 Python 가져 오기가 작동하도록 PYTHONPATH를 다음과 같이 설정합니다.

export SPARK_HOME=/usr/local/Cellar/apache-spark/1.2.0
export PYTHONPATH=$SPARK_HOME/libexec/python:$SPARK_HOME/libexec/python/build:$PYTHONPATH

Mac에서 “1.2.0”을 실제 apache-spark 버전으로 바꿉니다.


답변

pyspark에서 Spark를 실행하려면 함께 작동하는 데 두 가지 구성 요소가 필요합니다.

  • pyspark 파이썬 패키지
  • JVM의 Spark 인스턴스

spark-submit 또는 pyspark로 항목을 시작할 때이 스크립트는 둘 다 처리합니다. 즉, 스크립트가 pyspark를 찾을 수 있도록 PYTHONPATH, PATH 등을 설정하고, 매개 변수에 따라 구성하여 Spark 인스턴스도 시작합니다. , 예 : –master X

또는 이러한 스크립트를 우회하고 .NET과 같은 Python 인터프리터에서 직접 Spark 애플리케이션을 실행할 수 있습니다 python myscript.py. 이것은 스파크 스크립트가 더 복잡해지기 시작하고 결국 자체 인수를받을 때 특히 흥미 롭습니다.

  1. Python 인터프리터에서 pyspark 패키지를 찾을 수 있는지 확인합니다. 이미 논의했듯이 PYTHONPATH에 spark / python dir을 추가하거나 pip install을 사용하여 pyspark를 직접 설치합니다.
  2. 스크립트에서 스파크 인스턴스의 매개 변수를 설정합니다 (pyspark에 전달되는 데 사용 된 것).
    • 일반적으로 –conf로 설정하는 스파크 구성의 경우 SparkSession.builder.config의 구성 개체 (또는 문자열 구성)로 정의됩니다.
    • 현재 주요 옵션 (예 : –master 또는 –driver-mem)의 경우 PYSPARK_SUBMIT_ARGS 환경 변수에 작성하여 설정할 수 있습니다. 더 깨끗하고 안전하게 만들기 위해 Python 자체에서 설정할 수 있으며 Spark는 시작할 때 읽을 수 있습니다.
  3. 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())