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