Pyspark'ta bir Spark yürütmesi için iki bileşenin birlikte çalışması gerekir:
pyspark
python paketi
- JVM'de Spark örneği
Spark-submit veya pyspark ile bir şeyler başlatırken, bu komut dosyaları her ikisini de üstlenir, yani PYTHONPATH, PATH, vb. Ayarlarınızı yaparlar, böylece betiğiniz pyspark'ı bulabilir ve ayrıca parametrelerinize göre yapılandırarak spark örneğini başlatırlar. , örneğin --master X
Alternatif olarak, bu komut dosyalarını atlamak ve spark uygulamanızı doğrudan python yorumlayıcısında çalıştırmak mümkündür python myscript.py
. Bu, özellikle kıvılcım betikleri daha karmaşık hale gelmeye başladığında ve sonunda kendi argümanlarını aldığında ilginçtir.
- Pyspark paketinin Python yorumlayıcısı tarafından bulunabileceğinden emin olun. Daha önce tartışıldığı gibi, spark / python dizinini PYTHONPATH'a ekleyin veya pip kurulumunu kullanarak doğrudan pyspark'ı kurun.
- Spark örneğinin parametrelerini betiğinizden ayarlayın (önceden pyspark'a geçirilenler).
- Normalde --conf ile ayarladığınız kıvılcım yapılandırmaları için, bunlar SparkSession.builder.config içinde bir yapılandırma nesnesiyle (veya dize yapılandırmaları) tanımlanır.
- Ana seçenekler için (--master veya --driver-mem gibi) şimdilik bunları PYSPARK_SUBMIT_ARGS ortam değişkenine yazarak ayarlayabilirsiniz. İşleri daha temiz ve daha güvenli hale getirmek için, onu Python'un içinden ayarlayabilirsiniz ve spark başlarken onu okuyacaktır.
- Sadece
getOrCreate()
oluşturucu nesnesinden aramanızı gerektiren örneği başlatın.
Bu nedenle senaryonuz şöyle bir şeye sahip olabilir:
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())