谷歌BigQuery
本文描述了如何读和写谷歌在砖BigQuery表。
砖推荐使用服务帐户的电子邮件验证BigQuery能够进行身份验证。基于密钥的验证也覆盖了作为一个选项在这篇文章中,但它是更不安全密钥泄漏的风险。
需求
权限
你的项目必须有特定的谷歌使用BigQuery读写权限。
请注意
本文讨论了BigQuery物化视图。,谷歌的文章介绍了物化视图。学习其他BigQuery术语和BigQuery安全模型,看到谷歌BigQuery文档。
读写数据与BigQuery取决于两个谷歌云项目:
项目(
项目
):砖的谷歌云项目ID读取或写入BigQuery表。父项目(
parentProject
):父项目的ID,它默认为谷歌的云项目与谷歌相关数据砖工作区部署的服务帐户。
如果你不提供这些值显式地,两个值默认为该项目与您所使用的服务帐户进行身份验证。这适用于两种身份验证方法:一个服务帐户的电子邮件地址(推荐方法)或钥匙JSON文件。
可选设置项目
和parentProject
明确,使用类似于下面的代码。取代<项目id >
与你的项目ID。取代< parent-project-id >
你的父项目ID。
火花。读。格式(“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密钥类型。
点击创建。JSON关键文件被下载到你的电脑。
重要的
JSON密钥文件生成的服务帐户是一个应该共享只有授权用户的私钥,因为它控制访问数据集和资源云在你的谷歌账户。
第二步:设置数据砖
砖推荐使用服务帐户的电子邮件验证,但这里还包括基于密钥的验证说明。
建立了一个集群使用一个服务帐户的电子邮件地址(推荐)
当你配置您的集群使用集群编辑器,单击高级选项并设置谷歌服务帐户你的服务帐户的电子邮件地址。
建立一个集群使用基于密钥的认证
当你配置您的集群使用集群编辑器,单击高级选项,单击火花配置选项卡,并添加以下引发配置。取代< 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)为临时存储桶。