谷歌BigQuery
本文描述了如何读和写谷歌在砖BigQuery表。
你必须连接BigQuery能够使用基于密钥的认证。
需求
权限
你的项目必须有特定的谷歌使用BigQuery读写权限。
请注意
本文讨论了BigQuery物化视图。,谷歌的文章介绍了物化视图。学习其他BigQuery术语和BigQuery安全模型,看到谷歌BigQuery文档。
读写数据与BigQuery取决于两个谷歌云项目:
项目(
项目
):砖的谷歌云项目ID读取或写入BigQuery表。父项目(
parentProject
):父项目的ID,这是谷歌云项目ID为阅读和写作。设置这个谷歌云项目与谷歌相关服务帐户,您将生成密钥。
您必须显式地提供项目
和parentProject
在访问BigQuery的代码值。使用代码类似如下:
火花。读。格式(“bigquery”)\。选项(“表”,表)\。选项(“项目”,<项目- - - - - -id>)\。选项(“parentProject”,<父- - - - - -项目- - - - - -id>)\。负载()
所需的权限取决于谷歌云项目项目
和parentProject
都是一样的。下面的章节列表为每个场景所需的权限。
如果需要权限项目
和parentProject
匹配
如果你的id项目
和parentProject
是相同的,使用下面的表格来确定最小权限:
砖的任务 |
谷歌在这个项目所需的权限 |
---|---|
读BigQuery表没有物化视图 |
在
|
读BigQuery表与物化视图 |
在
实体化的项目:
|
写一个BigQuery表 |
在
|
如果需要权限项目
和parentProject
是不同的
如果你的id项目
和parentProject
是不同的,使用下面的表格来确定最小权限:
砖的任务 |
谷歌需要权限 |
---|---|
读BigQuery表没有物化视图 |
在
在
|
读BigQuery表与物化视图 |
在
在
实体化的项目:
|
写一个BigQuery表 |
在
在
|
步骤1:设置谷歌云
启用BigQuery存储API
BigQuery存储API是默认启用BigQuery启用新的谷歌云项目。然而,如果你有一个现有的项目和BigQuery存储API不启用,遵循本节中的步骤来启用它。
您可以启用BigQuery存储API使用谷歌云CLI或谷歌云控制台。
创建一个谷歌服务占砖
创建一个服务帐户的砖集群。砖推荐给这个服务帐户所需的最小特权来执行其任务。看到BigQuery角色和权限。
您可以创建一个服务帐户使用Google云CLI或谷歌云控制台。
创建一个谷歌服务帐户使用谷歌云CLI
gcloud我服务帐户创建<服务帐户名称> gcloud项目add-iam-policy-binding <项目名称>\角色/ bigquery.user——的作用\——成员=“serviceAccount: <服务帐户名称> @ <项目名称> .iam.gserviceaccount.com”gcloud项目add-iam-policy-binding <项目名称>\角色/ bigquery.dataEditor——的作用\——成员=“serviceAccount: <服务帐户名称> @ <项目名称> .iam.gserviceaccount.com”
为您的服务帐户创建的关键:
gcloud我服务- - - - - -账户键创建- - -我- - - - - -账户\“<服务帐户名称> @ <项目名称> .iam.gserviceaccount.com”\<项目- - - - - -的名字> - - -xxxxxxxxxxx。json
第二步:设置数据砖
集群配置访问BigQuery表,你必须提供JSON作为火花配置密钥文件。使用本地工具base64编码你的JSON密钥文件。为了安全目的不使用网络或远程工具可以访问你的钥匙。
当你配置您的集群:
设置砖的运行时版本的砖运行时7.3 LTS或以上。
在火花配置选项卡中,添加以下引发配置。取代
< base64-keys >
与你的base64编码JSON密钥文件。更换其他物品在括号中(如< client-email >
这些字段的值来自你的JSON密钥文件。凭证< base64-keys >spark.hadoop.google.cloud.auth.service.account。实现真正的spark.hadoop.fs.gs.auth.service.account。电子邮件< client-email >spark.hadoop.fs.gs.project。id <项目id >spark.hadoop.fs.gs.auth.service.account.private。关键<私有密匙>spark.hadoop.fs.gs.auth.service.account.private.key。id < private-key-id >
读和写BigQuery表
阅读BigQuery表,指定
df=火花。读。格式(“bigquery”)。选项(“表”,<表- - - - - -的名字>)。负载()
写信给一个BigQuery表,指定
df。写。格式(“bigquery”)。模式(“<模式>”)。选项(“temporaryGcsBucket”,“< bucket名>”)。选项(“表”,<表- - - - - -的名字>)。保存()
在哪里< bucket名>
斗中创建的名称吗创建一个谷歌云存储(GCS)为临时存储桶。