изменение часового пояса JVM в sparklyr - PullRequest
0 голосов
/ 14 сентября 2018

Я отчаянно пытаюсь изменить часовой пояс моей JVM в Sparklyr (используя spark 2.1.0). Я хочу GMT везде.

Я устанавливаю:

config$`driver.extraJavaOptions` <-"Duser.timezone=GMT"

в моем spark_config() файле, но, к сожалению, в интерфейсе Spark я все еще вижу (в разделе «Свойства системы»), что user.timezone имеет значение America/New_York.

Есть идеи? Спасибо!

1 Ответ

0 голосов
/ 17 сентября 2018

Несколько вещей:

  • Название объекта недвижимости 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).

...