我很抱歉,这个问题很难完全重现,因为它涉及到一个运行的spark上下文(引用如下sc),但我试图在sparklyr中设置hadoopConfiguration,专门用于访问swift/objectStore对象从RStudio sparklyr作为Spark对象,但通常用于scala调用hadoopConfiguration。类似于(斯卡拉码):sparklyr hadoopConfiguration
sc.hadoopConfiguration.set(f"fs.swift.service.$name.auth.url","https://identity.open.softlayer.com"/v3/auth/tokens")
其中sc是运行的火花上下文。在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(值)是第一个,但许多人包括列表和as.character(as.list(...)),它似乎是闪烁编码器的最爱)。任何建议将不胜感激。我已经梳理了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。