>

아주 기본적인 Spark + Python pyspark 튜토리얼을 실행하려고합니다. http ://spark.apache.org/docs/0.9.0/quick-start.html

새로운 SparkContext를 초기화하려고하면

from pyspark import SparkContext
sc = SparkContext("local[4]", "test")

다음 오류가 발생합니다 :

ValueError: Cannot run multiple SparkContexts at once

예제 코드를 실행하려는 이전의 시도가 지워지지 않은 무언가를 메모리에로드했는지 궁금합니다. 샘플 코드가 실행되도록 메모리에 이미있는 현재 SparkContext를 나열하거나 지우는 방법이 있습니까?


  • 답변 # 1

    이것은 터미널에 "pyspark"를 입력 할 때 시스템이 SparkContext (Object 일 수도 있음)를 자동으로 초기화 했으므로 새 것을 만들기 전에 중지해야합니다.

    사용할 수 있습니다

    sc.stop()
    
    

    새로운 SparkContext를 생성하기 전에

    또한 사용할 수 있습니다

    sc = SparkContext.getOrCreate()
    
    

    대신

    sc = SparkContext()
    
    

    Spark에서 새로운 기능이며 SparkContext () 함수의 매개 변수의 의미에 대해 잘 모르지만 위에 표시된 코드는 모두 저에게 효과적이었습니다.

  • 답변 # 2

    실행 중입니다./bin/pyspark는 대화식으로 SPARKCONTEXT를 자동으로로드합니다. 다음은 pyspark를 시작할 때 표시되는 내용입니다.

    Welcome to
          ____              __
         / __/__  ___ _____/ /__
        _\ \/ _ \/ _ `/ __/  '_/
       /__ / .__/\_,_/_/ /_/\_\   version 0.9.1
          /_/
    Using Python version 2.6.6 (r266:84292, Feb 22 2013 00:00:18)
    Spark context available as sc.
    
    

    ... 처음에 "del sc"를 실행하거나 자동으로 정의 된대로 "sc"를 사용하십시오.

    이 예제의 다른 문제는 정규 NFS 파일 시스템 위치를 보는 것처럼 보이지만 실제로 Hadoop의 HDFS 파일 시스템을 찾으려고합니다. 코드를 실행하기 전에 "hadoop fs -put README.md README.md"를 사용하여 $SPARK_HOME 위치에 README.md 파일을 업로드해야했습니다.

    대화식으로 실행 한 수정 된 예제 프로그램은 다음과 같습니다.

    from pyspark import SparkContext
    logFile = "README.md"
    logData = sc.textFile(logFile).cache()
    numAs = logData.filter(lambda s: 'a' in s).count()
    numBs = logData.filter(lambda s: 'b' in s).count()
    print "Lines with a: %i, lines with b: %i" % (numAs, numBs)
    
    

    다음은 독립형 파이썬 파일의 수정 된 버전입니다 :

    """SimpleApp.py"""
    from pyspark import SparkContext
    logFile = "README.md"  # Should be some file on your system
    sc = SparkContext("local", "Simple App")
    logData = sc.textFile(logFile).cache()
    numAs = logData.filter(lambda s: 'a' in s).count()
    numBs = logData.filter(lambda s: 'b' in s).count()
    print "Lines with a: %i, lines with b: %i" % (numAs, numBs)
    
    

    이제 $SPARK_HOME/bin/pyspark SimpleApp.py를 사용하여 실행할 수 있습니다

  • 답변 # 3

    다른 SparkContext를 만들기 전에 sc.stop ()을 사용해 보셨습니까?

  • 답변 # 4

    PySpark 프롬프트에서 SparkContext로 사용자 정의 구성을 설정하는 대신 PySpark를 시작할 때 구성 할 수 있습니다.

    예 :

    pyspark --master yarn --queue my_spark_pool1 --conf 
       spark.driver.extraLibraryPath="${LD_LIBRARY_PATH}" --conf 
       spark.executorEnv.LD_LIBRARY_PATH="${LD_LIBRARY_PATH}"
    
    

    이 conf를 PySpark의 sc 객체에 적용합니다.

  • 이전 android - 발리의 DiskBasedCache의 성능 문제
  • 다음 wpf - 함께 일하는 디자이너와 개발자