Spark 셸에서 Apache Spark 실행

대화형 Apache Spark 셸은 한 번에 하나의 Spark 명령을 실행하고 결과를 보기 위한 REPL(읽기 실행 인쇄 반복) 환경을 제공합니다. 이 프로세스는 개발 및 디버깅에 유용합니다. Spark는 지원되는 각 언어, Scala, Python 및 R에 대한 하나의 셸을 제공합니다.

Apache Spark 셸 실행

  1. ssh command 명령을 사용하여 클러스터에 연결합니다. CLUSTERNAME을 클러스터 이름으로 바꿔서 아래 명령을 편집하고, 다음 명령을 입력합니다.

    ssh sshuser@CLUSTERNAME-ssh.azurehdinsight.net
    
  2. Spark는 Scala(spark 셸) 및 Python(pyspark)에 대한 셸을 제공합니다. SSH 세션에서 다음 명령 중 하나를 입력합니다.

    spark-shell
    
    # Optional configurations
    # spark-shell --num-executors 4 --executor-memory 4g --executor-cores 2 --driver-memory 8g --driver-cores 4
    
    pyspark
    
    # Optional configurations
    # pyspark --num-executors 4 --executor-memory 4g --executor-cores 2 --driver-memory 8g --driver-cores 4
    

    선택적 구성을 사용하려는 경우 먼저 Apache Spark용 OutOfMemoryError 예외를 검토해야 합니다.

  3. 몇 가지 기본 예제 명령입니다. 관련 언어를 선택합니다.

    val textFile = spark.read.textFile("/example/data/fruits.txt")
    textFile.first()
    textFile.filter(line => line.contains("apple")).show()
    
    textFile = spark.read.text("/example/data/fruits.txt")
    textFile.first()
    textFile.filter(textFile.value.contains("apple")).show()
    
  4. CSV 파일을 쿼리합니다. 아래 언어는 spark-shellpyspark에 대해 작동합니다.

    spark.read.csv("/HdiSamples/HdiSamples/SensorSampleData/building/building.csv").show()
    
  5. CSV 파일을 쿼리하고 결과를 변수에 저장합니다.

    var data = spark.read.format("csv").option("header", "true").option("inferSchema", "true").load("/HdiSamples/HdiSamples/SensorSampleData/building/building.csv")
    
    data = spark.read.format("csv").option("header", "true").option("inferSchema", "true").load("/HdiSamples/HdiSamples/SensorSampleData/building/building.csv")
    
  6. 결과 표시:

    data.show()
    data.select($"BuildingID", $"Country").show(10)
    
    data.show()
    data.select("BuildingID", "Country").show(10)
    
  7. Exit

    :q
    
    exit()
    

SparkSession 및 SparkContext 인스턴스

기본적으로 Spark 셸을 실행할 때 SparkSession 및 SparkContext의 인스턴스는 자동으로 인스턴스화됩니다.

SparkSession 인스턴스에 액세스하려면 spark를 입력합니다. SparkContext 인스턴스에 액세스하려면 sc를 입력합니다.

중요한 셸 매개 변수

Spark 셸 명령(spark-shell 또는 pyspark)은 여러 명령줄 매개 변수를 지원합니다. 매개 변수의 전체 목록을 보려면 스위치 --help를 사용하여 Spark 셸을 시작합니다. 이러한 매개 변수 중 일부는 Spark 셸에서 래핑하는 spark-submit에만 적용될 수 있습니다.

switch description 예제
--master MASTER_URL 마스터 URL을 지정합니다. HDInsight에서 이 값은 항상 yarn입니다. --master yarn
--jars JAR_LIST 드라이버 및 실행기 클래스 경로에서 포함하도록 쉼표로 구분된 로컬 jar의 목록입니다. HDInsight에서 이 목록은 Azure Storage 또는 Data Lake Storage에서 기본 파일 시스템에 대한 경로로 구성됩니다. --jars /path/to/examples.jar
--packages MAVEN_COORDS 드라이버 및 실행기 클래스 경로에서 포함하도록 쉼표로 구분된 jars의 maven 좌표의 목록입니다. 로컬 maven 리포지토리를 검색한 다음 maven 중앙을 검색한 후 --repositories로 지정된 모든 추가 원격 리포지토리를 검색합니다. 좌표 형식은 그룹 ID:아티팩트 ID:버전입니다. --packages "com.microsoft.azure:azure-eventhubs:0.14.0"
--py-files LIST Python의 경우 PYTHONPATH에 배치하도록 쉼표로 구분된 .zip, .egg 또는 .py 파일의 목록입니다. --pyfiles "samples.py"

다음 단계