この質問は、実行中の 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 は実行中の 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 を使用しています。