Spark Shell から Apache Spark を実行する

対話型の Apache Spark シェルは、一度に 1 つずつ Spark コマンドを実行し、結果を表示する REPL (read-execute-print loop) 環境を提供します。 このプロセスは、開発およびデバッグに役立ちます。 Spark は、そのサポートされている言語 (Scala、Python、R) ごとに 1 つのシェルを提供します。

Apache Spark シェルの実行

  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 シェルを実行すると、SparkSession および SparkContext のインスタンスが自動的にインスタンス化されます。

SparkSession インスタンスにアクセスするには、「spark」と入力します。 SparkContext インスタンスにアクセスするには、「sc」と入力します。

重要なシェル パラメーター

Spark シェル コマンド (spark-shell または pyspark) は、数多くのコマンドライン パラメーターに対応しています。 パラメーターの完全な一覧を表示するには、スイッチ --help を使用して Spark シェルを起動します。 これらのパラメーターの一部は spark-submit のみに適用される場合があります (これは、Spark シェルによってラップされます)。

switch description
--master MASTER_URL マスター URL を指定します。 HDInsight では、この値は常に yarn です。 --master yarn
--jars JAR_LIST ドライバーと Executor のクラスパスに含めるローカル jar のコンマ区切りリスト。 HDInsight では、この一覧は Azure Storage または Data Lake Storage の既定のファイルシステムへのパスで構成されます。 --jars /path/to/examples.jar
--packages MAVEN_COORDS ドライバーと Executor のクラスパスに含める jar の maven コーディネートのコンマ区切りリスト。 ローカルの 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"

次のステップ