如何通过GCP私json密钥作为字符串而不是在Apache Spark传递文件路径?



我们正在运行托管在私有数据中心上的Spark,并试图从GCP存储读取数据。我使用下面的代码片段读取.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", "<SERVICE_ACCOUNT_JSON_IN_BASE64>")来访问BigQuery。我们可以做同样的从GCP存储读取数据吗?

我找到了答案,我们可以通过在sparkConfbean中设置以下配置来进行服务帐户认证,

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密钥文件路径,直接传递密钥信息。

相关内容

  • 没有找到相关文章

最新更新