2016-12-02 8 views
1

実行中のsparkコンテキスト(下記のscを参照)が含まれているため、この問題を完全に再現するのは難しいでしょうが、特にswift/objectStoreオブジェクトにアクセスするためにsparklyrにhadoopConfigurationを設定しようとしていますRStudio sparklyrからSparkオブジェクトとして、一般的にはhadoopConfigurationへのスカラ呼び出しのために使用されます。何かのようなもの(スカラーコード):sparklyr hadoopConfiguration

sc.hadoopConfiguration.set(f"fs.swift.service.$name.auth.url","https://identity.open.softlayer.com"/v3/auth/tokens") 

ここで、scは実行中のスパークコンテキストです。 SparkRでは私は私が考えるこれのすべての呪文を試してみましたが、私の最高の推測では(再びRコード)である

sc %>% invoke("set", paste("fs.swift.service.keystone,auth.url"), paste("https://identity.open.softlayer.com/v3/auth/tokens",sep="")) 

が、これは結果sparklyrで

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="")) 

(Rコード)を実行することができます当然の

Error in enc2utf8(value) : argumemt is not a character vector 

の非冗長エラー(不規則な綴り)で、私は私は考えることができるあらゆる方法で入力をエンコードしてみました(当然(値)最初であるが、リストを含む他の多くのenc2utf8 sparklyrコーダーにとってはお気に入りのように見えるas.character(as.list(...))。どんな提案も大歓迎です。私はsparklyrのソースコードを梳き、sparklyr githubにhadoopConfigurationの記述を見つけることができないので、コア設定で非常に基本的なものを見逃してしまうのではないかと心配しています。私もspark_connect()コアコールのconfig.ymlにこれらのconfigsを渡そうとしましたが、 "fs.swift.service.keystone.auth.url"をsc $ config $として設定しています。 swift.service.keystone.auth.urlの設定では、明らかにこれらをコアのhadoopConfigurationとして設定することに失敗しています。

ところで、私はSpark1.6、scala 2.10、R 3.2.1、sparklyr_0.4.19を使用しています。

答えて

3

私はset_swift_config(SC)で実行することができます

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") 
} 

これを考え出しました。

関連する問題