![](/img/trans.png)
[英]Changing aws credentials in hadoop configuration for pyspark during runtime after initialization of spark context
[英]In PySpark, is there a way to pass credentials as variables into spark.read?
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,或者将凭据作为字典传递?
另一个选项是credentials
。 来自spark-bigquery-connector 文档:
如何在 GCE / Dataproc 之外进行身份验证?
凭据也可以显式提供,作为参数或从 Spark 运行时配置。 它们应该直接作为 base64 编码的字符串传入。
// Globally spark.conf.set("credentials", "<SERVICE_ACCOUNT_JSON_IN_BASE64>") // Per read/Write spark.read.format("bigquery").option("credentials", "<SERVICE_ACCOUNT_JSON_IN_BASE64>")
这更像是先有鸡还是先有蛋的情况。 如果您将凭证文件存储在秘密管理器中(希望这不是您的凭证管理器工具)。 您将如何访问秘密管理器。 为此,您可能需要密钥以及将该密钥存储在哪里。
为此,Azure 创建了一个托管身份,两个不同的服务可以通过它相互通信,而无需显式提供任何密钥(凭据)。
如果您从 Dataproc 运行,则该节点有一个内置服务帐户,您可以在创建集群时控制该帐户。 在这种情况下,您不需要传递任何 credentials/credentialsFile 选项。
如果您在另一个云或本地运行,您可以使用本地秘密管理器,或实施连接器的 AccessTokenProvider,它允许您完全自定义凭据创建。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.