我正在尝试连接我的spark作业,它运行在私有数据中心和bigquery之间。我已经创建了服务帐户,获得了私有json密钥,并获得了对我想要查询的数据集的读取访问权。但是,当我尝试与spark集成时,我收到了 User does not have bigquery.tables.create permission for dataset :yyy.
. 我们需要create table权限才能使用bigquery从表中读取数据吗?
下面是控制台上打印的响应,
{
"code" : 403,
"errors" : [ {
"domain" : "global",
"message" : "Access Denied: Dataset xxx:yyy: User does not have bigquery.tables.create permission for dataset xxx:yyy.",
"reason" : "accessDenied"
} ],
"message" : "Access Denied: Dataset xxx:yyy: User does not have bigquery.tables.create permission for dataset xxx:yyy.",
"status" : "PERMISSION_DENIED"
}
下面是我试图访问bigquery的spark代码
object ConnectionTester extends App {
val session = SparkSession.builder()
.appName("big-query-connector")
.config(getConf)
.getOrCreate()
session.read
.format("bigquery")
.option("viewsEnabled", true)
.load("xxx.yyy.table1")
.select("col1")
.show(2)
private def getConf : SparkConf = {
val sparkConf = new SparkConf
sparkConf.setAppName("biq-query-connector")
sparkConf.setMaster("local[*]")
sparkConf.set("parentProject", "my-gcp-project")
sparkConf.set("credentialsFile", "<path to my credentialsFile>")
sparkConf
}
}
2条答案
按热度按时间ryhaxcpt1#
检查以下代码。
凭据
编码
base64
&把它传给spark conf。iecba09b2#
对于阅读常规表格,没有必要
bigquery.tables.create
许可。但是,您提供的代码示例提示表实际上是一个bigquery视图。bigquery视图是逻辑引用,它们在服务器端没有具体化,为了让spark读取它们,首先需要将它们具体化为一个临时表。为了创建这个临时表bigquery.tables.create
需要许可。