spark.conf.set 使用 SparkR

spark.conf.set with SparkR

我在 Azure 上有一个 Databricks 集群 运行,我想使用 SparkR / sparklyr 从 Azure Data Lake Storage 读取/写入数据。因此我配置了两个resources.

现在我必须为 Spark 环境提供必要的配置以针对 Data Lake Storage 进行身份验证。

使用 PySpark API 设置配置有效:

    spark.conf.set("dfs.adls.oauth2.access.token.provider.type", "ClientCredential")
    spark.conf.set("dfs.adls.oauth2.client.id", "****")
    spark.conf.set("dfs.adls.oauth2.credential", "****")
    spark.conf.set("dfs.adls.oauth2.refresh.url", "https://login.microsoftonline.com/****/oauth2/token")

最后应该用SparkR / sparklyr。在这里我不知道在哪里设置 spark.conf.set。我会猜到是这样的:

    sparkR.session(
    sparkConfig = list(spark.driver.memory = "2g",
    spark.conf.set("dfs.adls.oauth2.access.token.provider.type", "ClientCredential"),
    spark.conf.set("dfs.adls.oauth2.client.id", "****"),
    spark.conf.set("dfs.adls.oauth2.credential", "****"),
    spark.conf.set("dfs.adls.oauth2.refresh.url", "https://login.microsoftonline.com/****/oauth2/token")
    ))

如果使用 SparkR API 的专家之一可以帮助我,那就太棒了。谢谢!

编辑: user10791349 的回答是正确的并且有效。另一种解决方案是安装外部 data source,这是最佳做法。这目前只能使用 Scala 或 Python 但安装的数据源之后可以使用 SparkR API.

sparkConfig should be

named list of Spark configuration to set on worker nodes.

所以正确的格式是

sparkR.session(
  ... # All other options
  sparkConfig = list(
    spark.driver.memory = "2g",
    dfs.adls.oauth2.access.token.provider.type = "ClientCredential",
    dfs.adls.oauth2.client.id = "****",
    dfs.adls.oauth2.credential = "****",
    dfs.adls.oauth2.refresh.url ="https://login.microsoftonline.com/****/oauth2/token"
  )
)

请记住,许多配置只有在没有活动会话时才会被识别。