pysparkでSparkを実行するには、2つのコンポーネントを連携させる必要があります。
- pysparkpythonパッケージ
- JVMのSparkインスタンス
spark-submitまたはpysparkを使用して起動する場合、これらのスクリプトは両方に対応します。つまり、スクリプトがpysparkを検出できるようにPYTHONPATH、PATHなどを設定し、また、sparkインスタンスを開始して、パラメーターに従って構成します。 、たとえば--master X
または、これらのスクリプトをバイパスして、のようにpythonインタープリターで直接Sparkアプリケーションを実行することもできますpython myscript.py。これは、sparkスクリプトがより複雑になり始め、最終的に独自の引数を受け取るときに特に興味深いものです。
- Pythonインタープリターがpysparkパッケージを見つけられるようにしてください。すでに説明したように、spark / pythonディレクトリをPYTHONPATHに追加するか、pip installを使用してpysparkを直接インストールします。
- スクリプトからSparkインスタンスのパラメーターを設定します(これまではpysparkに渡されていました)。 
- 通常--confで設定するスパーク構成の場合、SparkSession.builder.configの構成オブジェクト(または文字列構成)で定義されます
- 現時点での主なオプション(--master、-driver-memなど)については、PYSPARK_SUBMIT_ARGS環境変数に書き込むことで設定できます。物事をよりクリーンで安全なものにするために、Python自体から設定でき、sparkは起動時にそれを読み取ります。
 
- インスタンスを開始します。これにはgetOrCreate()、ビルダーオブジェクトから呼び出す必要があります。
したがって、スクリプトは次のようになります。
from pyspark.sql import SparkSession
if __name__ == "__main__":
    if spark_main_opts:
        # Set main options, e.g. "--master local[4]"
        os.environ['PYSPARK_SUBMIT_ARGS'] = spark_main_opts + " pyspark-shell"
    # Set spark config
    spark = (SparkSession.builder
             .config("spark.checkpoint.compress", True)
             .config("spark.jars.packages", "graphframes:graphframes:0.5.0-spark2.1-s_2.11")
             .getOrCreate())