穀歌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)為臨時存儲桶。