如何在Apache Spark (pyspark)中使用BigQuery进行身份验证?

4

我已经为我的bigquery项目创建了client idclient secret,但我不知道如何使用它们成功地将pyspark脚本中的数据帧保存到我的bigquery表中。我的python代码如下所示,并出现以下错误。是否有一种方法可以使用pyspark数据帧的保存选项连接到BigQuery?

代码

df.write \
  .format("bigquery") \
  .option("client_id", "<MY_CLIENT_ID>") \
  .option("client_secret", "<MY_CLIENT_SECRET>") \
  .option("project", "bigquery-project-id") \
  .option("table", "dataset.table") \
  .save()

错误 py4j.protocol.Py4JJavaError: 在调用o93.save时发生错误: com.google.cloud.spark.bigquery.repackaged.com.google.cloud.bigquery.BigQueryException: 400 Bad Request {"error": "invalid_grant", "error_description": "Bad Request"} 在com.google.cloud.spark.bigquery.repackaged.com.google.cloud.bigquery.spi.v2.HttpBigQueryRpc.translate(HttpBigQueryRpc.java:106)处, [...]由于com.google.cloud.spark.bigquery.repackaged.com.google.api.client.http.HttpResponseException: 400 Bad Request {"error": "invalid_grant", "error_description": "Bad Request"}引起的。
1个回答

6

来自spark-bigquery-connector

如果我不在GCE / Dataproc上如何进行身份验证?

使用服务帐户JSON密钥和GOOGLE_APPLICATION_CREDENTIALS,具体说明在此处

凭据还可以明确地提供,作为参数或从Spark运行时配置中提供。它可以直接作为base64编码的字符串传递,或者作为包含凭据的文件路径(但不能同时使用两种方式)。

因此您应该使用以下内容:

spark.read.format("bigquery").option("credentialsFile", "</path/to/key/file>")

我需要其他的配置吗?我现在看到这个错误: 请使用构建器设置项目ID - Megan
1
您也可以通过选项添加它。请查看所有可用的属性 - blackbishop
选项("parentProject", "要计费的项目") - Parth Gupta

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接