【问题标题】:How do I add a jar using sparklyr?如何使用 sparklyr 添加罐子?
【发布时间】:2018-01-01 07:03:31
【问题描述】:

当我尝试使用 Rstudio 和 sparklyr 使用此代码访问 Hive 表时:

library(sparklyr)
library(dplyr)
Sys.setenv(SPARK_HOME="/usr/hdp/current/spark2-client") # got from ambari spark2 configs
sc <- spark_connect(master = "yarn-client", config = config, version = '2.1.0')

library(DBI)
tabTweets <- dbGetQuery(sc, "SELECT * FROM tweets0 LIMIT 10")

我收到此错误:

Error in value[[3L]](cond) : 
  Failed to fetch data: java.lang.RuntimeException: java.lang.ClassNotFoundException: org.openx.data.jsonserde.JsonSerDe

这是因为 tweets0 是使用 JsonSerDe 创建的。它很容易修复,例如,当使用 Hive CLI 遇到时:

Add jar /usr/hdp/2.4.2.0-258/hive/lib/json-serde-1.3.7-jar-with-dependencies.jar;

那么我该如何使用 sparklyr 做一个等效的添加 jar 呢?

编辑: 我试过这个:

spark_dependencies <- function(spark_version, scala_version, ...) {
  sparklyr::spark_dependency(
    jars = c(
      system.file(
        sprintf("/usr/hdp/2.4.2.0-258/hive/lib/json-serde-1.3.7-jar-with-dependencies.jar"),
    package = "JsonSerDe"
      )
    )
  )
}
.onLoad <- function(libname, pkgname) {
  sparklyr::register_extension(pkgname)
}

library(JsonSerDe)

但仍然相同的错误和库(JsonSerDe)给出:

Error in library(JsonSerDe) : there is no package called ‘JsonSerDe’

我在 Spark 日志中没有看到任何关于添加依赖项的信息。

【问题讨论】:

  • 您是否创建/正在使用名为 JsonSerDe 的 R 包?您可以通过 spark_connect 中的配置选项将 jars 添加到 sparklyr,特别是名为 sparklyr.jars.default 的列表。

标签: sparklyr


【解决方案1】:

您可以使用 spark config 提供 jar。下面为我​​们工作。

config[["sparklyr.jars.default"]] <- "/usr/lib/jars/json-serde-1.3.7-jar-with-dependencies.jar"

config[["sparklyr.jars.default"]] &lt;- "hdfs://master.royble.co.uk:8020/jars/json-serde-1.3.7-jar-with-dependencies.jar"

【讨论】:

    【解决方案2】:

    这个问题不是一个闪闪发光的问题:它是 tez.lib.uris 中的一个设置。改为:

    /hdp/apps/${hdp.version}/tez/tez.tar.gz,hdfs://master.royble.co.uk:8020/jars/json-serde-1.3.7-jar-with-dependencies.jar
    

    (注意:逗号和 hdfs 路径后没有空格)。 然而问题:

    Error in library(JsonSerDe) : there is no package called ‘JsonSerDe’
    

    仍然存在,我会接受这个答案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-04
      • 2015-12-04
      • 2017-05-02
      • 2016-12-17
      • 1970-01-01
      • 2020-06-10
      • 2015-06-27
      • 1970-01-01
      相关资源
      最近更新 更多