Spark允许我们直接从Google BigQuery上阅读,如下所示:
df = spark.read.format("bigquery")
.option("credentialsFile", "googleKey.json")
.option("parentProject", "projectId")
.option("table", "project.table")
.load()
然而,将密钥保存在虚拟机上并不是一个好主意。我在凭据管理工具中将Google密钥安全地保存为JSON。密钥是按需读取的,并保存到名为googleKey的变量中。
可以将JSON传递给Speak.Read,或者将凭据作为字典传递吗?
3条答案
按热度按时间hc2pp10m1#
另一个选项是
credentials
。来自Spark-BigQuery-Connector文档:凭证也可以作为参数或通过Spark运行时配置显式提供。它们应该作为Base64编码的字符串直接传入。
yquaqz182#
这更像是鸡和蛋的情况。如果您将凭据文件存储在秘密管理器中(希望这不是您的凭据管理器工具)。您将如何访问秘密管理器。为此,您可能需要密钥,您将在哪里存储该密钥。
为此,Azure创建了一个托管身份,通过它,两个不同的服务可以相互对话,而不需要显式提供任何密钥(凭据)。
oewdyzsn3#
如果您从Dataproc运行,则该节点具有内置服务帐户,您可以在创建群集时控制该帐户。在这种情况下,您不需要传递任何凭据/凭据文件选项。
如果您在另一个云或Prem上运行,您可以使用本地密钥管理器,或者实现连接器的AccessTokenProvider,它允许您完全定制凭据创建。