Próbuję ustawić spark.local.dir
z iskry-powłoki za pomocą sc.getconf.set("spark.local.dir","/temp/spark")
, Ale to nie działa. Czy jest jakikolwiek inny sposób na ustawienie tej właściwości z iskierki.Jak ustawić właściwość spark.local.dir z powłoki iskrzenia?
Odpowiedz
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
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.
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
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
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ź. –