當我嘗試訪問使用Rstudio和sparklyr使用此代碼蜂房表:如何使用sparklyr添加jar?
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’
我什麼也看不到星火日誌有關添加依賴。
你有沒有您使用的R包稱爲'JsonSerDe'創建/?您可以添加罐通過配置選項sparklyr在'spark_connect',具體而言,列表名爲'sparklyr.jars.default'。 – russellpierce