Несколько вещей:
- Название объекта недвижимости
spark.driver.extraJavaOptions
.
- Значение отсутствует в начале
-
. Должно быть -Duser.timezone=GMT
.
- Для согласованности вам нужны и
spark.driver.extraJavaOptions
, и spark.executor.extraJavaOptions
.
В общем случае spark.driver.extraJavaOptions
и аналогичные свойства должны быть установлены вне приложения. Как объяснено в официальной документации :
В режиме клиента этот конфиг не должен быть установлен через SparkConf непосредственно в вашем приложении, потому что драйвер JVM уже запущен в этот момент. Вместо этого, пожалуйста, установите это с помощью параметра командной строки --driver-java-options или в вашем файле свойств по умолчанию.
На драйвере, вызывающем , соответствующие методы Java должны работать
# sc is spark_shell_connection / spark_connection
sparklyr::invoke_static(sc, "java.util.TimeZone", "getTimeZone", "GMT") %>%
sparklyr::invoke_static(sc, "java.util.TimeZone", "setDefault", .)
, но может не отображаться в пользовательском интерфейсе, и вам все равно понадобится spark.executor.extraJavaOptions
.
В общем случае вам нужно отредактировать spark-defualts.conf
в каталоге конфигурации, чтобы включить
spark.driver.extraJavaOptions -Duser.timezone=GMT
spark.executor.extraJavaOptions -Duser.timezone=GMT
Если вы не можете изменить основную конфигурацию, вы можете создать каталог для конкретного приложения и указать на него, используя SPARK_CONF_DIR
environment variabl.e
В последних версиях вы также можете установить spark.sql.session.timeZone
в самом приложении (обратите внимание, что оно отличается от соответствующих параметров JVM и влияет только на запросы Spark).