從 Spark Shell 執行 Apache Spark

互動式 Apache Spark Shell 會提供 REPL (「讀取、求值、輸出」迴圈) 環境,一次執行一個 Spark 命令並查看結果。 此流程適用於開發和偵錯。 Spark 會為每個支援的語言提供一個殼層:Scala、Python 和 R。

執行 Apache Spark Shell

  1. 使用 ssh 命令來連線到您的叢集。 編輯以下命令並將 CLUSTERNAME 取代為您叢集的名稱,然後輸入命令:

    ssh sshuser@CLUSTERNAME-ssh.azurehdinsight.net
    
  2. Spark 會為 Scala (spark-shell) 與 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. 結束

    :q
    
    exit()
    

SparkSession 和 SparkContext 執行個體

依預設,執行 Spark Shell 時,SparkSession 和 SparkContext 的執行個體會自動具現化。

若要存取 SparkSession 執行個體,請輸入 spark。 若要存取 SparkContext 執行個體,請輸入 sc

重要的殼層參數

Spark Shell 命令 (spark-shellpyspark) 支援許多命令列參數。 若要查看完整的參數清單,請使用參數 --help 啟動 Spark Shell。 部分參數可能只適用於 spark-submit (由 Spark Shell 包裝)。

switch description 範例
--master MASTER_URL 指定主要 URL。 在 HDInsight 中,此值一律為 yarn --master yarn
--jars JAR_LIST 本機 Jar 的逗號分隔清單,用來包含在驅動程式和執行程式 Classpath 中。 在 HDInsight 中,此清單是由 Azure 儲存體或 Data Lake Storage 中的預設檔案系統路徑組成。 --jars /path/to/examples.jar
--packages MAVEN_COORDS Jar 的 Maven 座標逗號分隔清單,用來包含在驅動程式和執行程式 Classpath 中。 依序搜尋本機 Maven 存放庫、Maven 中心和所有以 --repositories 指定的遠端存放庫。 座標格式為 groupId:artifactId:version --packages "com.microsoft.azure:azure-eventhubs:0.14.0"
--py-files LIST (僅適用於 Python) 要放在 PYTHONPATH 中的 .zip.egg.py 檔案的逗號分隔清單。 --pyfiles "samples.py"

下一步