Untuk eksekusi Spark di pyspark, dua komponen diperlukan untuk bekerja bersama:
pyspark
paket python
- Instance percikan dalam JVM
Saat meluncurkan sesuatu dengan spark-submit atau pyspark, skrip ini akan mengurus keduanya, yaitu mereka mengatur PYTHONPATH, PATH, dll. Anda, sehingga skrip Anda dapat menemukan pyspark, dan mereka juga memulai contoh percikan, mengonfigurasi sesuai dengan parameter Anda , misalnya --master X
Alternatifnya, dimungkinkan untuk melewati skrip ini dan menjalankan aplikasi spark Anda langsung di interpreter python seperti python myscript.py
. Ini sangat menarik ketika skrip percikan mulai menjadi lebih kompleks dan akhirnya menerima argumennya sendiri.
- Pastikan paket pyspark dapat ditemukan oleh penerjemah Python. Seperti yang sudah dibahas, tambahkan dir spark / python ke PYTHONPATH atau langsung instal pyspark menggunakan pip install.
- Tetapkan parameter contoh percikan dari skrip Anda (yang dulu diteruskan ke pyspark).
- Untuk konfigurasi spark seperti yang biasanya Anda setel dengan --conf, konfigurasi tersebut ditentukan dengan objek config (atau konfigurasi string) di SparkSession.builder.config
- Untuk opsi utama (seperti --master, atau --driver-mem) saat ini Anda dapat menyetelnya dengan menulis ke variabel lingkungan PYSPARK_SUBMIT_ARGS. Untuk membuat segalanya lebih bersih dan aman, Anda dapat mengaturnya dari dalam Python itu sendiri, dan spark akan membacanya saat memulai.
- Mulai instance, yang hanya mengharuskan Anda memanggil
getOrCreate()
dari objek pembangun.
Karena itu, skrip Anda dapat memiliki sesuatu seperti ini:
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())