Для іскрового виконання в pyspark потрібно працювати два компоненти:
pyspark
пакет пітона
- Іскровий екземпляр у JVM
Коли ви запускаєте речі з іскровою подачею або pyspark, ці сценарії подбають про обидва, тобто вони встановлять ваш PYTHONPATH, PATH тощо, щоб ваш скрипт міг знайти pyspark, а також запустити екземпляр іскри, налаштовуючи відповідно до ваших параметрів , наприклад - майстер X
Крім того, можна обійти ці сценарії та запустити іскрову програму безпосередньо в інтерфейсі python python myscript.py
. Це особливо цікаво, коли сценарії іскр починають ускладнюватися і з часом отримують власні аргументи.
- Переконайтесь, що пакет Pyspark може знайти інтерпретатор Python. Як уже обговорювалося, або додайте іскру / пітон dir до PYTHONPATH або безпосередньо встановіть pyspark за допомогою установки pip.
- Встановіть параметри іскрового екземпляра зі свого сценарію (ті, які раніше передавались у pyspark).
- Для конфігурацій іскр, які ви зазвичай встановлювали за допомогою --conf, вони визначені об'єктом config (або рядковими конфігураціями) в SparkSession.builder.config
- Для основних параметрів (наприклад, --master або --driver-mem) на даний момент ви можете встановити їх, записавши до змінної середовища PYSPARK_SUBMIT_ARGS. Щоб зробити речі більш чистими та безпечнішими, ви можете встановити їх всередині самого Python, а іскра буде читати його під час запуску.
- Запустіть екземпляр, який просто вимагає зателефонувати
getOrCreate()
з об’єкта builder.
Тому ваш сценарій може мати щось подібне:
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())