Para una ejecución de Spark en pyspark, se requieren dos componentes para trabajar juntos:
pyspark
paquete python
- Instancia de Spark en una JVM
Al iniciar cosas con spark-submit o pyspark, estos scripts se encargarán de ambos, es decir, configuran su PYTHONPATH, PATH, etc., para que su script pueda encontrar pyspark, y también inician la instancia de Spark, configurándose de acuerdo con sus parámetros. , por ejemplo, maestro X
Alternativamente, es posible omitir estos scripts y ejecutar su aplicación Spark directamente en el intérprete de Python como python myscript.py
. Esto es especialmente interesante cuando los scripts de chispa comienzan a volverse más complejos y eventualmente reciben sus propios argumentos.
- Asegúrese de que el intérprete de Python pueda encontrar el paquete pyspark. Como ya se mencionó, agregue el directorio spark / python a PYTHONPATH o instale directamente pyspark usando pip install.
- Establezca los parámetros de la instancia de Spark desde su script (los que solían pasarse a pyspark).
- Para configuraciones de chispa, como normalmente establecería con --conf, se definen con un objeto de configuración (o configuraciones de cadena) en SparkSession.builder.config
- Para las opciones principales (como --master o --driver-mem) por el momento, puede configurarlas escribiendo en la variable de entorno PYSPARK_SUBMIT_ARGS. Para hacer las cosas más limpias y seguras, puede configurarlo desde el propio Python, y Spark lo leerá al iniciar.
- Inicie la instancia, que solo requiere que llame
getOrCreate()
desde el objeto constructor.
Por lo tanto, su secuencia de comandos puede tener algo como esto:
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())