2016-11-02 14 views

Odpowiedz

7

Nie można tego zrobić z poziomu w powłoce - ponieważ kontekst Spark został już utworzony, więc lokalny katalog został już ustawiony (i użyty). należy przekazać go jako parametr podczas począwszy skorupę:

./spark-shell --conf spark.local.dir=/temp/spark 
+0

Oprócz rozwiązania, nie może zamknąć aktualnego kontekstu iskry (za pomocą sc.stop()), a następnie ustawić wartość spark.local.dir, i sc.getOrCreate() to? – Yaron

+0

Masz rację - to (może wymagać nieco dłuższej wersji: 'SparkSession.builde r.config (sc.getConf) .config ("spark.local.dir", "/ temp/spark"). getOrCreate() '), ale otrzymasz' WARN SparkContext: Użyj istniejącego SparkContext, niektóre konfiguracje mogą nie weźcie w życie ", co sugeruje, że nie jest to zalecana ścieżka. Ale - tak, masz rację, możesz dodać jako inną odpowiedź. –

3

rozwiązanie @Tzach Zohar wydaje się być dobrym rozwiązaniem.

Jeśli jednak nalegać, aby ustawić spark.local.dir z iskrą-shell można zrobić:

1) zamknąć bieżący kontekst zapłonową

sc.stop() 

2) Zaktualizowano konfigurację SC, i uruchom ponownie.

Zaktualizowana kod został udostępniony dzięki uprzejmości @ Tzach-Zohar:

SparkSession.builder.config(sc.getConf).config("spark.local.‌​dir","/temp/spark").‌​getOrCreate()) 

@Tzach Zohar dopiskiem: „ale masz WARN SparkContext: Użyj istniejącego SparkContext niektóre konfiguracja nie może mieć wpływu, co sugeruje, że nie jest to zalecana ścieżka.

+0

Z sekcji [Sparks 'documentation] (https://spark.apache.org/docs/2.1.0/configuration.html) na temat "spark.local.dir": "UWAGA: W wersji 1.0 i nowszych zostanie to przesłonięte według zmiennych środowiskowych SPARK_LOCAL_DIRS (Standalone, Mesos) lub LOCAL_DIRS (YARN) ustawionych przez menedżera klastra. " – Wesam