Sdílet prostřednictvím


Google BigQuery

Tento článek popisuje, jak číst a zapisovat do tabulek Google BigQuery v Azure Databricks.

Důležité

Konfigurace popsané v tomto článku jsou experimentální. Experimentální funkce jsou poskytovány tak, jak jsou, a Databricks je nepodporuje prostřednictvím technické podpory zákazníků. Pokud chcete získat plnou podporu federace dotazů, měli byste místo toho použít Lakehouse Federation, která uživatelům Azure Databricks umožňuje využívat syntaxi katalogu Unity a nástroje zásad správného řízení dat.

K BigQuery se musíte připojit pomocí ověřování založeného na klíči.

Oprávnění

Vaše projekty musí mít specifická oprávnění Google ke čtení a zápisu pomocí BigQuery.

Poznámka:

Tento článek popisuje materializovaná zobrazení BigQuery. Podrobnosti najdete v článku Google Úvod do materializovaných zobrazení. Další terminologii BigQuery a model zabezpečení BigQuery najdete v dokumentaci k Google BigQuery.

Čtení a zápis dat pomocí BigQuery závisí na dvou projektech Google Cloud:

  • Project (project): ID projektu Google Cloud, ze kterého Azure Databricks čte nebo zapisuje tabulku BigQuery.
  • Nadřazený projekt (parentProject): ID nadřazeného projektu, což je ID projektu Google Cloud, které se má fakturovat za čtení a zápis. Nastavte ho na projekt Google Cloud přidružený k účtu služby Google, pro který vygenerujete klíče.

Je nutné explicitně zadat project hodnoty a parentProject hodnoty v kódu, který přistupuje k BigQuery. Použijte kód podobný následujícímu:

spark.read.format("bigquery") \
  .option("table", table) \
  .option("project", <project-id>) \
  .option("parentProject", <parent-project-id>) \
  .load()

Požadovaná oprávnění pro projekty Google Cloud závisí na tom, jestli project a parentProject jsou stejná. V následujících částech jsou uvedena požadovaná oprávnění pro jednotlivé scénáře.

Požadovaná oprávnění, pokud project a parentProject odpovídá

Pokud jsou ID vaší project a parentProject jsou stejná, použijte následující tabulku k určení minimálních oprávnění:

Úloha Azure Databricks Oprávnění Google vyžadovaná v projektu
Čtení tabulky BigQuery bez materializovaného zobrazení project V projektu:

– Uživatel relace čtení BigQuery
– Prohlížeč dat BigQuery (Volitelně ho udělte na úrovni datové sady nebo tabulky místo na úrovni projektu).
Čtení tabulky BigQuery s materializovaným zobrazením project V projektu:

– Uživatel úlohy BigQuery
– Uživatel relace čtení BigQuery
– Prohlížeč dat BigQuery (Volitelně ho udělte na úrovni datové sady nebo tabulky místo na úrovni projektu).

V projektu materializace:

– Editor dat BigQuery
Zápis tabulky BigQuery project V projektu:

– Uživatel úlohy BigQuery
– Editor dat BigQuery

Požadovaná oprávnění, pokud project se parentProject liší

Pokud se ID vašeho project a parentProject liší se, použijte následující tabulku k určení minimálních oprávnění:

Úloha Azure Databricks Požadovaná oprávnění Google
Čtení tabulky BigQuery bez materializovaného zobrazení parentProject V projektu:

– Uživatel relace čtení BigQuery

project V projektu:

– Prohlížeč dat BigQuery (Volitelně ho udělte na úrovni datové sady nebo tabulky místo na úrovni projektu).
Čtení tabulky BigQuery s materializovaným zobrazením parentProject V projektu:

– Uživatel relace čtení BigQuery
– Uživatel úlohy BigQuery

project V projektu:

– Prohlížeč dat BigQuery (Volitelně ho udělte na úrovni datové sady nebo tabulky místo na úrovni projektu).

V projektu materializace:

– Editor dat BigQuery
Zápis tabulky BigQuery parentProject V projektu:

– Uživatel úlohy BigQuery

project V projektu:

– Editor dat BigQuery

Krok 1: Nastavení Služby Google Cloud

Povolení rozhraní API služby BigQuery Storage

Rozhraní API služby BigQuery Storage je ve výchozím nastavení povolené v nových projektech Google Cloud, ve kterých je povolený BigQuery. Pokud ale máte existující projekt a rozhraní API služby BigQuery Storage není povolené, povolte ho podle kroků v této části.

Rozhraní API služby BigQuery Storage můžete povolit pomocí rozhraní příkazového řádku Google Cloud nebo konzoly Google Cloud Console.

Povolení rozhraní API služby BigQuery Storage pomocí Rozhraní příkazového řádku Google Cloud

gcloud services enable bigquerystorage.googleapis.com

Povolení rozhraní API služby BigQuery Storage pomocí konzoly Google Cloud Console

  1. V levém navigačním podokně klikněte na rozhraní API a služby .

  2. Klikněte na tlačítko POVOLIT APIS A SLUŽBY .

    Google Enable Services

  3. Zadejte bigquery storage api do panelu hledání a vyberte první výsledek.

    Google BigQuery Storage

  4. Ujistěte se, že je povolené rozhraní API služby BigQuery Storage.

    Google BigQuery

Vytvoření účtu služby Google pro Azure Databricks

Vytvořte účet služby pro cluster Azure Databricks. Databricks doporučuje poskytnout tomuto účtu služby nejnižší oprávnění potřebná k provádění svých úloh. Viz role a oprávnění BigQuery.

Účet služby můžete vytvořit pomocí rozhraní příkazového řádku Google Cloud nebo konzoly Google Cloud Console.

Vytvoření účtu služby Google pomocí Rozhraní příkazového řádku Google Cloud

gcloud iam service-accounts create <service-account-name>

gcloud projects add-iam-policy-binding <project-name> \
--role roles/bigquery.user \
--member="serviceAccount:<service-account-name>@<project-name>.iam.gserviceaccount.com"

gcloud projects add-iam-policy-binding <project-name> \
--role roles/bigquery.dataEditor \
--member="serviceAccount:<service-account-name>@<project-name>.iam.gserviceaccount.com"

Vytvořte klíče pro účet služby:

gcloud iam service-accounts keys create --iam-account \
"<service-account-name>@<project-name>.iam.gserviceaccount.com" \
<project-name>-xxxxxxxxxxx.json

Vytvoření účtu služby Google pomocí konzoly Google Cloud Console

Vytvoření účtu:

  1. V levém navigačním podokně klikněte na IAM a Správce .

  2. Klikněte na Účty služeb.

  3. Klikněte na + VYTVOŘIT ÚČET SLUŽBY.

  4. Zadejte název a popis účtu služby.

    Vytvoření účtu služby Google

  5. Klikněte na VYTVOŘIT.

  6. Zadejte role pro váš účet služby. V rozevíracím seznamu Vybrat roli zadejte BigQuery a přidejte následující role:

    Oprávnění Google

  7. Klikněte na POKRAČOVAT.

  8. Klikněte na HOTOVO.

Vytvoření klíčů pro účet služby:

  1. V seznamu účtů služeb klikněte na nově vytvořený účet.

  2. V části Klíče vyberte tlačítko PŘIDAT KLÍČ > Vytvořit nový klíč .

    Google Create Key

  3. Přijměte typ klíče JSON.

  4. Klikněte na VYTVOŘIT. Soubor klíče JSON se stáhne do počítače.

    Důležité

    Soubor klíče JSON, který pro účet služby vygenerujete, je privátní klíč, který by se měl sdílet jenom s autorizovanými uživateli, protože řídí přístup k datovým sadám a prostředkům ve vašem účtu Google Cloud.

Vytvoření kontejneru GCS (Google Cloud Storage) pro dočasné úložiště

Pro zápis dat do BigQuery potřebuje zdroj dat přístup k kbelíku GCS.

  1. V levém navigačním podokně klikněte na Úložiště .

  2. Klikněte na VYTVOŘIT KBELÍK.

    Google Create Bucket

  3. Nakonfigurujte podrobnosti o kontejneru.

    Podrobnosti o kontejneru Google

  4. Klikněte na VYTVOŘIT.

  5. Klikněte na kartu Oprávnění a přidejte členy.

  6. Zadejte následující oprávnění k účtu služby v kontejneru.

    Oprávnění ke kbelíku Google

  7. Klikněte na ULOŽIT.

Krok 2: Nastavení Azure Databricks

Pokud chcete nakonfigurovat cluster pro přístup k tabulkám BigQuery, musíte jako konfiguraci Sparku zadat soubor klíče JSON. K kódování souboru klíče JSON použijte místní nástroj. Pro účely zabezpečení nepoužívejte webový ani vzdálený nástroj, který by mohl přistupovat k vašim klíčům.

Při konfiguraci clusteru:

Na kartě Konfigurace Sparku přidejte následující konfiguraci Sparku. Nahraďte <base64-keys> řetězcem souboru klíče JSON s kódováním Base64. Ostatní položky v hranatých závorkách (například <client-email>) nahraďte hodnotami těchto polí ze souboru klíče JSON.

credentials <base64-keys>

spark.hadoop.google.cloud.auth.service.account.enable true
spark.hadoop.fs.gs.auth.service.account.email <client-email>
spark.hadoop.fs.gs.project.id <project-id>
spark.hadoop.fs.gs.auth.service.account.private.key <private-key>
spark.hadoop.fs.gs.auth.service.account.private.key.id <private-key-id>

Čtení a zápis do tabulky BigQuery

Pokud chcete přečíst tabulku BigQuery, zadejte

df = spark.read.format("bigquery") \
  .option("table",<table-name>) \
  .option("project", <project-id>)  \
  .option("parentProject", <parent-project-id>) \
  .load()

Pokud chcete zapisovat do tabulky BigQuery, zadejte

df.write.format("bigquery") \
  .mode("<mode>") \
  .option("temporaryGcsBucket", "<bucket-name>") \
  .option("table", <table-name>) \
  .option("project", <project-id>) \
  .option("parentProject", <parent-project-id>) \
  .save()

kde <bucket-name> je název kontejneru, který jste vytvořili v kontejneru Pro dočasné úložiště Google Cloud Storage (GCS). Informace o požadavcích <project-id> a <parent-id> hodnotách najdete v tématu Oprávnění.

Vytvoření externí tabulky z BigQuery

Důležité

Tato funkce není podporována katalogem Unity.

V Databricks můžete deklarovat nespravovanou tabulku, která bude číst data přímo z BigQuery:

CREATE TABLE chosen_dataset.test_table
USING bigquery
OPTIONS (
  parentProject 'gcp-parent-project-id',
  project 'gcp-project-id',
  temporaryGcsBucket 'some-gcp-bucket',
  materializationDataset 'some-bigquery-dataset',
  table 'some-bigquery-dataset.table-to-copy'
)

Příklad poznámkového bloku Pythonu: Načtení tabulky Google BigQuery do datového rámce

Následující poznámkový blok Pythonu načte tabulku Google BigQuery do datového rámce Azure Databricks.

Ukázkový poznámkový blok Pythonu Pro Google BigQuery

Získat poznámkový blok

Příklad poznámkového bloku Scala: Načtení tabulky Google BigQuery do datového rámce

Následující poznámkový blok Scala načte tabulku Google BigQuery do datového rámce Azure Databricks.

Ukázkový poznámkový blok Google BigQuery Scala

Získat poznámkový blok