sparklyr hadoop配置
sparklyr hadoopConfiguration
我很抱歉这个问题很难完全重现,因为它涉及到 运行ning spark 上下文(下面称为 sc),但我正在尝试在 sparklyr 中设置一个 hadoopConfiguration,专门用于从 RStudio sparklyr 访问 swift/objectStore 个对象作为 Spark 对象,但通常用于对 hadoopConfiguration 的 scala 调用。像(scala代码):
sc.hadoopConfiguration.set(f"fs.swift.service.$name.auth.url","https://identity.open.softlayer.com"/v3/auth/tokens")
其中 sc 是 运行ning spark 上下文。在 SparkR 中,我可以 运行(R 代码)
hConf = SparkR:::callJMethod(sc, "hadoopConfiguration")
SparkR:::callJMethod(hConf, "set", paste("fs.swift.service.keystone.auth.url"), paste("https://identity.open.softlayer.com/v3/auth/tokens",sep=""))
在 sparklyr 中,我已经尝试了所有我能想到的咒语,但我最好的猜测是(再次是 R 代码)
sc %>% invoke("set", paste("fs.swift.service.keystone,auth.url"), paste("https://identity.open.softlayer.com/v3/auth/tokens",sep=""))
但这会导致
的非冗长错误(和不规则拼写)
Error in enc2utf8(value) : argumemt is not a character vector
当然,我尝试以我能想到的所有方式对输入进行编码(自然是 enc2utf8(value) 是第一个,但还有许多其他方式,包括列表和 as.character(as.list(. ..)) 这似乎是 sparklyr 编码器的最爱)。任何建议将不胜感激。我梳理了sparklyr的源代码,并没有在sparklyr github中找到任何关于hadoopConfiguration的提及,所以我担心我在核心配置中遗漏了一些非常基本的东西。我还尝试在 spark_connect() 核心调用中的 config.yml 中传递这些配置,但是在将 "fs.swift.service.keystone.auth.url" 设置为 sc$config$s.swift.service.keystone.auth.url 设置,显然未能将这些设置为核心 hadoopConfiguration。
顺便说一下,我正在使用 Spark1.6、scala 2.10、R 3.2.1 和 sparklyr_0.4.19.
我想通了
set_swift_config <- function(sc){
#get spark_context
ctx <- spark_context(sc)
#set the java spark context
jsc <- invoke_static(
sc,
"org.apache.spark.api.java.JavaSparkContext",
"fromSparkContext",
ctx
)
#set the swift configs:
hconf <- jsc %>% invoke("hadoopConfiguration")
hconf %>% invoke("set","fs.swift.service.keystone.auth.url",
"https://identity.open.softlayer.com/v3/auth/tokens" )
}
可以是 运行 和 set_swift_config(sc)
。
我很抱歉这个问题很难完全重现,因为它涉及到 运行ning spark 上下文(下面称为 sc),但我正在尝试在 sparklyr 中设置一个 hadoopConfiguration,专门用于从 RStudio sparklyr 访问 swift/objectStore 个对象作为 Spark 对象,但通常用于对 hadoopConfiguration 的 scala 调用。像(scala代码):
sc.hadoopConfiguration.set(f"fs.swift.service.$name.auth.url","https://identity.open.softlayer.com"/v3/auth/tokens")
其中 sc 是 运行ning spark 上下文。在 SparkR 中,我可以 运行(R 代码)
hConf = SparkR:::callJMethod(sc, "hadoopConfiguration")
SparkR:::callJMethod(hConf, "set", paste("fs.swift.service.keystone.auth.url"), paste("https://identity.open.softlayer.com/v3/auth/tokens",sep=""))
在 sparklyr 中,我已经尝试了所有我能想到的咒语,但我最好的猜测是(再次是 R 代码)
sc %>% invoke("set", paste("fs.swift.service.keystone,auth.url"), paste("https://identity.open.softlayer.com/v3/auth/tokens",sep=""))
但这会导致
的非冗长错误(和不规则拼写)Error in enc2utf8(value) : argumemt is not a character vector
当然,我尝试以我能想到的所有方式对输入进行编码(自然是 enc2utf8(value) 是第一个,但还有许多其他方式,包括列表和 as.character(as.list(. ..)) 这似乎是 sparklyr 编码器的最爱)。任何建议将不胜感激。我梳理了sparklyr的源代码,并没有在sparklyr github中找到任何关于hadoopConfiguration的提及,所以我担心我在核心配置中遗漏了一些非常基本的东西。我还尝试在 spark_connect() 核心调用中的 config.yml 中传递这些配置,但是在将 "fs.swift.service.keystone.auth.url" 设置为 sc$config$s.swift.service.keystone.auth.url 设置,显然未能将这些设置为核心 hadoopConfiguration。
顺便说一下,我正在使用 Spark1.6、scala 2.10、R 3.2.1 和 sparklyr_0.4.19.
我想通了
set_swift_config <- function(sc){
#get spark_context
ctx <- spark_context(sc)
#set the java spark context
jsc <- invoke_static(
sc,
"org.apache.spark.api.java.JavaSparkContext",
"fromSparkContext",
ctx
)
#set the swift configs:
hconf <- jsc %>% invoke("hadoopConfiguration")
hconf %>% invoke("set","fs.swift.service.keystone.auth.url",
"https://identity.open.softlayer.com/v3/auth/tokens" )
}
可以是 运行 和 set_swift_config(sc)
。