【问题标题】:changing the JVM timezone in sparklyr在 sparklyr 中更改 JVM 时区
【发布时间】:2019-02-19 07:56:13
【问题描述】:

我正在拼命地尝试在 Sparklyr 中更改我的 JVM 的时区(使用 spark 2.1.0)。我想要GMT 无处不在。

我正在设置:

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

在我的 spark_config() 文件中,但不幸的是,在 Spark UI 中,我仍然看到(在系统属性下)user.timezone 设置为 America/New_York

有什么想法吗? 谢谢!

【问题讨论】:

    标签: r apache-spark sparklyr


    【解决方案1】:

    一些事情:

    • 属性名称是spark.driver.extraJavaOptions
    • 值缺少前导-。应该是-Duser.timezone=GMT
    • 为了保持一致性,您需要spark.driver.extraJavaOptionsspark.executor.extraJavaOptions
    • 一般情况下spark.driver.extraJavaOptions 和类似的属性应该在应用程序之外设置。如the official documentation 中所述:

      在客户端模式下,这个配置不能通过 SparkConf 直接在你的应用程序中设置,因为此时驱动程序 JVM 已经启动。相反,请通过 --driver-java-options 命令行选项或在您的默认属性文件中进行设置。

      在驱动程序上调用corresponding Java methods 应该可以工作

      # sc is spark_shell_connection / spark_connection
      sparklyr::invoke_static(sc, "java.util.TimeZone",  "getTimeZone", "GMT") %>%
        sparklyr::invoke_static(sc, "java.util.TimeZone", "setDefault", .)
      

      但可能不会反映在 UI 中,您仍然需要 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 查询)。

    【讨论】:

    • 谢谢。我实际上在我的代码中包含了破折号,并尝试了执行程序和驱动程序。似乎不起作用。您建议使用调用的解决方案应该在启动 spark 会话之前运行?
    • invoke_static 将 session 作为第一个参数,所以在之后。但是正确的做法是使用配置文件。
    • 我尝试运行invoke_static 命令并返回NULL。在那之后,我似乎仍然在 EST 中,因为运行类似 unix_t = from_utc_timestamp(timestamp(t) ,'UTC'), myday = as.character(to_date(unix_t)) 的东西,然后 myday 显示转换为 EST 而不是 GMT ......我在这里真的很困惑。一个可能的解决方案是使用spark_apply,但这太慢了stackoverflow.com/questions/49355077/…
    • 那是因为它只处理驱动端,而不是执行器。真正使用配置文件。
    • 谢谢。那么我应该在spark_conf_dir 中输入什么?假设我不能修改主要的 conf 文件?
    猜你喜欢
    • 2017-11-18
    • 1970-01-01
    • 1970-01-01
    • 2012-07-17
    • 2018-01-11
    • 2021-09-14
    • 1970-01-01
    • 1970-01-01
    • 2011-10-27
    相关资源
    最近更新 更多