【问题标题】:How to pass GCP private json key as String instead of passing file path in Apache Spark?如何将 GCP 私有 json 密钥作为字符串传递,而不是在 Apache Spark 中传递文件路径?
【发布时间】:2021-08-11 12:29:55
【问题描述】:

我们正在运行托管在私有数据中心上的 Spark,并尝试从 GCP 存储中读取数据。我正在使用下面的代码 sn-p 来读取.csv

val sparkConf = new SparkConf
    sparkConf.setAppName("gcp-storage-reader")
    sparkConf.setMaster("local[*]")
    sparkConf.set("google.cloud.auth.service.account.json.keyfile", "<json key file>")

val sparkSession = SparkSession.builder().config(sparkConf).getOrCreate()

sparkSession
     .read
     .csv("gs://input/test.csv")
     .show(2)  

是否有传递.json 密钥内容,而不是私钥json 的路径。例如,我们可以通过设置spark.conf.set("credentials", "&lt;SERVICE_ACCOUNT_JSON_IN_BASE64&gt;") 来访问BigQuery。我们是否也可以从 GCP 存储中读取数据?

【问题讨论】:

    标签: apache-spark google-cloud-platform google-cloud-storage google-authentication


    【解决方案1】:

    我找到了答案,我们可以通过在sparkConf bean 中设置如下配置来做服务账号认证,

    sparkConf.set("fs.gs.auth.service.account.private.key.id", "<privateKeyId>")
    sparkConf.set("fs.gs.auth.service.account.private.key", "<privateKey>")
    sparkConf.set("fs.gs.auth.service.account.email", "<clientEmail>")
    

    这样我们可以避免传递私有JSON密钥文件路径,直接传递密钥信息。

    【讨论】:

      猜你喜欢
      • 2020-10-31
      • 1970-01-01
      • 1970-01-01
      • 2019-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多