파이썬 셸에서 pyspark 가져오기
다른 포럼에서 한 번도 답변이 없었던 다른 분의 질문을 복사한 것이기 때문에 저도 같은 문제가 있어서 여기서 다시 물어볼까 생각했습니다.(http://geekple.com/blogs/feeds/Xgzu7/posts/351703064084736) 참조)
나는 내 기계에 스파크가 제대로 설치되어 있고 파이썬 인터프리터로 ./bin/pyspark를 사용할 때 파이썬 모듈로 파이썬 프로그램을 오류 없이 실행할 수 있습니다.
그러나 일반 Python 셸을 실행하려고 하면 pyspark 모듈을 가져오려고 하면 다음 오류가 발생합니다.
from pyspark import SparkContext
라고 써있더군요.
"No module named pyspark".
이거 어떻게 고쳐요?Python을 pyspark 헤더/라이브러리/등으로 가리키기 위해 설정해야 하는 환경 변수가 있습니까?스파크 설치가 /spark/인 경우 어떤 pyspark 경로를 포함해야 합니까?아니면 pyspark 프로그램은 pyspark 인터프리터에서만 실행할 수 있습니까?
다음 중 하나를 가정합니다.
- 스파크가 시스템에 다운로드되고 환경 변수가 있습니다.
SPARK_HOME
그것을 가리키며 - 뛰었습니다.
pip install pyspark
간단한 방법이 있습니다(방법에 신경쓰지 않는다면!!!)
파인드스파크 사용
파이썬 셸로 이동
pip install findspark import findspark findspark.init()
필요한 모듈을 수입합니다.
from pyspark import SparkContext from pyspark import SparkConf
됐습니다.
이러한 오류를 인쇄하는 경우:
가져오기 오류: 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이 python을 로드하고 있으며 자동으로 올바른 라이브러리 경로를 로드하고 있음이 밝혀졌습니다.체크아웃$SPARK_HOME/bin/pyspark
:
export SPARK_HOME=/some/path/to/apache-spark
# Add the PySpark classes to the Python path:
export PYTHONPATH=$SPARK_HOME/python/:$PYTHONPATH
이 줄을 .bashrc 파일에 추가했고 모듈이 이제 올바르게 발견되었습니다!
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
파일
py 파일을 다음과 같이 실행하지 마십시오.python filename.py
대신 사용:spark-submit filename.py
출처 : https://spark.apache.org/docs/latest/submitting-applications.html
Mac에서는 홈브루를 사용하여 스파크(공식 "apache-spark")를 설치합니다.그런 다음 파이썬 가져오기가 작동하도록 파이썬 경로를 이렇게 설정했습니다.
export SPARK_HOME=/usr/local/Cellar/apache-spark/1.2.0
export PYTHONPATH=$SPARK_HOME/libexec/python:$SPARK_HOME/libexec/python/build:$PYTHONPATH
맥에 있는 실제 apache-spark 버전으로 "1.2.0"을 대체합니다.
Pyspark에서 스파크를 실행하려면 다음 두 가지 구성 요소가 함께 작동해야 합니다.
pyspark
파이썬 패키지- JVM에서 스파크 인스턴스
spark-submit 또는 pyspark로 작업을 시작할 때 이 스크립트는 둘 다 처리합니다. 예를 들어 스크립트가 pyspark를 찾을 수 있도록 PYTHONPATH, PATH 등을 설정하고, 또한 prispark 인스턴스를 시작하여 매개 변수에 따라 구성합니다. --master X.
또는 이러한 스크립트를 무시하고 python 인터프리터에서 직접 스파크 애플리케이션을 실행하는 것도 가능합니다.python myscript.py
때 스파크 스크립트가 복잡해지기 시작하고 결국 자신의 아르그를 받을 때 특히 흥미롭습니다.
- 파이썬 인터프리터가 pyspark 패키지를 찾을 수 있는지 확인합니다.이미 논의한 바와 같이 PYTHONPATH에 스파크/파이톤디어를 추가하거나 Pip install을 사용하여 직접 pyspark를 설치합니다.
- 스크립트에서 스파크 인스턴스의 매개 변수(pyspark로 전달되던 매개 변수)를 설정합니다.
- 일반적으로 --conf로 설정하는 스파크 구성의 경우 스파크 세션에서 구성 개체(또는 문자열 구성)로 정의됩니다.builder.config
- 순간의 주요 옵션(예: --master 또는 --driver-mem)의 경우 PYSPARK_SUBMIT_ARGS 환경 변수에 기록하여 설정할 수 있습니다.Python 자체 내에서 설정할 수 있으며 시작할 때 스파크가 이를 읽어줍니다.
- 호출만 하면 되는 인스턴스를 시작합니다.
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())
없애버리기ImportError: No module named py4j.java_gateway
, 다음 줄을 추가해야 합니다.
import os
import sys
os.environ['SPARK_HOME'] = "D:\python\spark-1.4.1-bin-hadoop2.4"
sys.path.append("D:\python\spark-1.4.1-bin-hadoop2.4\python")
sys.path.append("D:\python\spark-1.4.1-bin-hadoop2.4\python\lib\py4j-0.8.2.1-src.zip")
try:
from pyspark import SparkContext
from pyspark import SparkConf
print ("success")
except ImportError as e:
print ("error importing spark modules", e)
sys.exit(1)
윈도우 10에서는 다음과 같은 것들이 저에게 효과가 있었습니다.Settings > Edit environment variables for your account: 설정 > Edit environment variables for your account:
SPARK_HOME=C:\Programming\spark-2.0.1-bin-hadoop2.7
PYTHONPATH=%SPARK_HOME%\python;%PYTHONPATH%
(변경 "C:\프로그래밍\..." 스파크가 설치된 폴더로 이동)
Linux 사용자의 경우 PYSONPATH에 pyspark libaray를 포함하는 올바른(그리고 하드 코딩되지 않은) 방법은 다음과 같습니다.두 PATH 부품이 모두 필요합니다.
- pyspark Python 모듈 자체에 대한 경로 및
- 가져올 때 해당 pyspark 모듈이 의존하는 ziped 라이브러리의 경로
아래의 주의할 점은 압축된 라이브러리 버전이 동적으로 결정되므로 하드 코드화하지 않는다는 것입니다.
export PYTHONPATH=${SPARK_HOME}/python/:$(echo ${SPARK_HOME}/python/lib/py4j-*-src.zip):${PYTHONPATH}
저는 센트에 있는 스파크 클러스터를 운영하고 있습니다.클라우드 얌 패키지에서 설치되는 OS VM입니다.
pyspark를 실행하기 위해 다음 변수를 설정해야 했습니다.
export SPARK_HOME=/usr/lib/spark;
export PYTHONPATH=$SPARK_HOME/python:$SPARK_HOME/python/lib/py4j-0.9-src.zip:$PYTHONPATH
export PYSPARK_PYTHON=/home/user/anaconda3/bin/python
export PYSPARK_DRIVER_PYTHON=jupyter
export PYSPARK_DRIVER_PYTHON_OPTS='notebook'
스파크와 함께 아나콘다 배포판을 사용하기 위해 한 일입니다.스파크 버전과는 무관합니다.첫 번째 줄을 사용자의 파이썬 빈으로 변경할 수 있습니다.또한 Spark 2.2.0 현재 PySpark는 PyPi에서 Stand-alone 패키지로 제공되고 있지만 아직 테스트를 해보지 못했습니다.
당신은 그것을 얻을 수 있습니다.pyspark path
python으로pip
(PIP를 이용하여 pyspark를 설치한 경우) 아래와 같이
pip show pyspark
제출하려던 python 스크립트가 pyspark.py (페이스팜)이라고 해서 이런 오류가 발생했습니다.수정은 위에서 권장한 대로 내 파이썬패스를 설정한 다음 스크립트 이름을 pyspark_test.py로 변경하고 내 스크립트 원래 이름을 기반으로 생성된 pyspark.pyc를 정리하여 이 오류를 해결하는 것이었습니다.
DSE(DataStax Cassandra & Spark)의 경우 아래 위치를 PYTHONPATH에 추가해야 함
export PYTHONPATH=/usr/share/dse/resources/spark/python:$PYTHONPATH
그런 다음 dsepyspark를 사용하여 모듈을 경로로 이동시킵니다.
dse pyspark
저는 이와 같은 문제가 있어서 위에 제안된 해결책에 한 가지를 추가하고자 합니다.Mac OS X에서 홈브루를 사용하여 Spark를 설치할 때 경로에 libexec이 포함되도록 py4j 경로 주소를 수정해야 합니다(py4j 버전을 가지고 있는 버전으로 변경하는 것을 기억하십시오).
PYTHONPATH=$SPARK_HOME/libexec/python/lib/py4j-0.9-src.zip:$PYTHONPATH
저도 같은 문제가 있었습니다.
또한 올바른 python 버전을 사용하고 있으며 올바른 pip 버전으로 설치하고 있는지 확인합니다.내 경우에는:python 2.7과 3.x 둘다 가지고 있었습니다. pyspark 를 설치했습니다.
pip2.7 pyspark 설치
그리고 그것은 성공하였다.
제 경우에는 python 3.6을 사용하는 동안 다른 python dist_package(python 3.5)에 설치되고 있었기 때문에 다음이 도움이 되었습니다.
python -m pip install pyspark
Alpine을 OS로 하는 Docker 컨테이너를 만들고 Python과 Pyspark를 패키지로 설치할 수도 있습니다.그렇게 되면 모든 것이 컨테이너에 저장될 것입니다.
!pip install pyspark
Jupyter 노트북이나 Google collab에서.잊지말구요Restart Runtime
collab 노트북 위에 나열됨
언급URL : https://stackoverflow.com/questions/23256536/importing-pyspark-in-python-shell
'it-source' 카테고리의 다른 글
플로트 분할을 할 때 이중으로 주조하고 뒤로 주조할 때 정확도가 향상됩니까? (0) | 2023.10.23 |
---|---|
안드로이드 버전과 코드 버전 번호를 변경하는 방법은? (0) | 2023.10.23 |
컴파일러는 무한 루프를 제거할 수 있습니까? (0) | 2023.10.23 |
"Module 'name'(모듈 '이름')이(가) 입력되지 않은 모듈로 확인됩니다.." 사용자 지정 TypeScript 정의 파일을 작성할 때 (0) | 2023.10.23 |
C++의 Mariadb Kerberos 인증 (0) | 2023.10.23 |