Pour écrire un script autonome, je voudrais démarrer et configurer un contexte Spark directement depuis Python. En utilisant le script PySpark, je peux définir la taille de mémoire du driver avec :
$ /opt/spark-1.6.1/bin/pyspark
... INFO MemoryStore: MemoryStore started with capacity 511.5 MB ...
$ /opt/spark-1.6.1/bin/pyspark --conf spark.driver.memory=10g
... INFO MemoryStore: MemoryStore started with capacity 7.0 GB ...
Mais lorsque je démarre le contexte depuis le module Python, la taille de la mémoire du driver ne peut pas être définie :
$ export SPARK_HOME=/opt/spark-1.6.1
$ export PYTHONPATH=$PYTHONPATH:$SPARK_HOME/python
$ python
>>> from pyspark import SparkConf, SparkContext
>>> sc = SparkContext(conf=SparkConf().set('spark.driver.memory', '10g'))
... INFO MemoryStore: MemoryStore started with capacity 511.5 MB ...
La seule solution que je connaisse est de définir spark.driver.memory
dans sparks-default.conf
, ce qui n'est pas satisfaisant. Comme expliqué dans ce post, il est logique pour Java/Scala de ne pas pouvoir changer la taille de mémoire du driver une fois que le JVM est démarré. Y a-t-il un moyen de le configurer dynamiquement depuis Python avant ou lors de l'importation du module pyspark
?