從 Spark Shell 執行 Apache Spark
互動式 Apache Spark Shell 會提供 REPL (「讀取、求值、輸出」迴圈) 環境,一次執行一個 Spark 命令並查看結果。 此流程適用於開發和偵錯。 Spark 會為每個支援的語言提供一個殼層:Scala、Python 和 R。
執行 Apache Spark Shell
使用 ssh 命令來連線到您的叢集。 編輯以下命令並將 CLUSTERNAME 取代為您叢集的名稱,然後輸入命令:
ssh sshuser@CLUSTERNAME-ssh.azurehdinsight.net
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 例外狀況。
幾個基本範例命令。 請選擇相關的語言:
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()
查詢 CSV 檔案。 請注意,下方的語言適用於
spark-shell
與pyspark
。spark.read.csv("/HdiSamples/HdiSamples/SensorSampleData/building/building.csv").show()
查詢 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")
顯示結果:
data.show() data.select($"BuildingID", $"Country").show(10)
data.show() data.select("BuildingID", "Country").show(10)
結束
:q
exit()
SparkSession 和 SparkContext 執行個體
依預設,執行 Spark Shell 時,SparkSession 和 SparkContext 的執行個體會自動具現化。
若要存取 SparkSession 執行個體,請輸入 spark
。 若要存取 SparkContext 執行個體,請輸入 sc
。
重要的殼層參數
Spark Shell 命令 (spark-shell
或 pyspark
) 支援許多命令列參數。 若要查看完整的參數清單,請使用參數 --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" |
下一步
- 如需概觀,請參閱 Azure HDInsight 上的 Apache Spark 簡介。
- 請參閱在 Azure HDInsight 中建立 Apache Spark 叢集,搭配使用 Spark 叢集和 SparkSQL。
- 請參閱什麼是 Apache Spark 結構化串流,以使用 Spark 撰寫可處理串流資料的應用程式。