pyspark 프로그램을 원격으로 실행할 때 오류 보고에 대한 솔루션

시나리오 설명

시나리오는 로컬 Pycharm에서 SSH 원격 인터프리터를 구성하는 것입니다. 이는 로컬에서 개발하고 동기식으로 실행하기 위해 원격 서버에 제출하는 것과 동일하며 매우 편리합니다. 교육 비디오에 이어 작은 데모를 만들 때 비디오에 나타나지 않는 몇 가지 문제가 발생하여 여기에 기록했습니다. pyspark 대화형 환경과 원격 서버의 spark-submit 명령이 정상적으로 실행될 수 있는지 테스트되었습니다.

1. 질문 1

오류: JAVA_HOME이 설정되지 않았습니다.

처음에는 인터프리터를 구성하는 사용자의 .bashrc 파일에 JAVA_HOME을 구성해야 한다고 생각했는데 시도해보니 안되네요. 인터넷에서 본 또 다른 해결책은 Spark 설치 디렉토리의 sbin/spark-config.sh 파일에 JAVA_HOME을 구성하는 것인데 시도한 결과 작동하지 않았습니다. 다음 체계는 인터넷 정보에 유효합니다. 로컬 py 파일에 다음 코드가 추가됩니다(JAVA_HOME은 원격 서버에서 jdk 설치 경로를 구성합니다).

import os
os.environ['JAVA_HOME'] = "/export/server/jdk1.8.0_241"

2. 질문 2

스파크 초기화(다음 코드 줄)를 실행하면 프로그램이 바로 종료되며 다음 코드는 실행할 수 없습니다.

if __name__ == '__main__':
    # 初始化执行环境,构建SparkContext对象
    conf = SparkConf().setAppName("test").setMaster("local[3]")
    sc = SparkContext(conf=conf)

영상의 출력과 비교해보니 "Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties" 출력이 누락된 것을 확인했습니다. 인터넷에 있는 정보 SPARK_HOME을 추가할 계획도 있는데 시도 후 작동합니다: 로컬 py 파일에 다음 코드를 추가합니다(SPARK_HOME에서 spark의 설치 경로 구성).

os.environ['SPARK_HOME'] = "/export/server/spark-3.2.0-bin-hadoop3.2"

3. 질문 3

报错:예외: 작업자의 Python은 드라이버 3.8의 버전과 버전 3.6이 다릅니다.

버전 문제인 줄 알고 처음에는 가상환경 생성시 파이썬 버전을 지정하지 않은 줄 알고 가상환경을 다시 생성하고 파이썬 버전을 지정하려고 했으나 여전히 이런 오류가 발생합니다. 다음 체계는 인터넷 정보에 유효합니다. 로컬 py 파일에 다음 코드가 추가됩니다(PYSPARK_PYTHON의 가상 환경에서 Python 인터프리터 경로 구성).

import os
os.environ['PYSPARK_PYTHON'] = '/export/software/anaconda3/envs/pyspark/bin/python'

4. 질문 4

위의 세 가지 문제를 해결한 후 다음과 같은 오류 보고서가 발생했습니다.
질문 4 오류

인터넷에서 이런 문제를 못찾았는데 보통은 찾아볼 수 있어서 처음에 많이 놀랬습니다 그다음에 영상으로 비교해보니 영상에 설치된 pyspark가 3.2.0 버전이라는 것을 알았습니다. 에 해당하며, pyspark는 설치시 최신 3.3.0 버전을 자동으로 설치하여 불일치가 발생하여 pyspark 3.2.0 버전을 재설치하여 문제를 성공적으로 해결하였습니다.

감상

4번 질문과 같이 지극히 개인적인 질문은 버전 관련일 가능성이 높으며, 작은 부분만 업데이트가 되면 오류가 보고될 수 있습니다. 소프트웨어 버전(예: spark)과 클래스 라이브러리 버전(예: pyspark)을 일관성을 유지하십시오. 처음 세 가지 질문에서 이 원격 제출 코드 실행 방법은 서버에서 환경 변수에 액세스할 수 없는 것 같으므로 프로그램에서 명시적으로 지정해야 함을 알 수 있습니다.

추천

출처blog.csdn.net/CloudInSky1/article/details/127246089