Aracılığıyla paylaş


Google BigQuery

Bu makalede, Azure Databricks'teki Google BigQuery tablolarından okuma ve bu tablolara yazma işlemleri açıklanmaktadır.

Not

BigQuery verilerinde sorguları yönetmek için Lakehouse Federasyonu'nı tercih edebilirsiniz. Bkz . Lakehouse Federasyonu nedir?

Anahtar tabanlı kimlik doğrulaması kullanarak BigQuery'ye bağlanmanız gerekir.

İzinler

Projelerinizin BigQuery kullanarak okumak ve yazmak için belirli Google izinlerine sahip olması gerekir.

Not

Bu makalede BigQuery gerçekleştirilmiş görünümleri ele alınmaktadır. Ayrıntılar için Google'da gerçekleştirilmiş görünümlere giriş makalesine bakın. Diğer BigQuery terminolojisini ve BigQuery güvenlik modelini öğrenmek için Google BigQuery belgelerine bakın.

BigQuery ile veri okuma ve yazma iki Google Cloud projesine bağlıdır:

  • Proje (project): Azure Databricks'in BigQuery tablosunu okuduğu veya yazdığı Google Cloud projesinin kimliği.
  • Üst proje (parentProject): Okuma ve yazma için faturalandırılan Google Cloud Proje Kimliği olan üst projenin kimliği. Bunu anahtar oluşturacağınız Google hizmet hesabıyla ilişkilendirilmiş Google Cloud projesi olarak ayarlayın.

BigQuery'ye project erişen kodda ve parentProject değerlerini açıkça sağlamanız gerekir. Aşağıdakine benzer bir kod kullanın:

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

Google Cloud projeleri için gerekli izinler, aynı olup parentProject olmadığına project bağlıdır. Aşağıdaki bölümlerde her senaryo için gerekli izinler listelanmıştır.

ve parentProject eşleşiyorsa project gerekli izinler

ve parentProject kimlikleriniz project aynıysa, en düşük izinleri belirlemek için aşağıdaki tabloyu kullanın:

Azure Databricks görevi Projede gereken Google izinleri
Gerçekleştirilmiş görünüm olmadan BigQuery tablosunu okuma Projede project :

* BigQuery Okuma Oturumu Kullanıcısı
* BigQuery Veri Görüntüleyicisi (İsteğe bağlı olarak bunu proje düzeyi yerine veri kümesi/tablo düzeyinde verin)
Gerçekleştirilmiş görünüme sahip BigQuery tablosunu okuma Projede project :

* BigQuery İş Kullanıcısı
* BigQuery Okuma Oturumu Kullanıcısı
* BigQuery Veri Görüntüleyicisi (İsteğe bağlı olarak bunu proje düzeyi yerine veri kümesi/tablo düzeyinde verin)

Gerçekleştirme projesinde:

* BigQuery Veri Düzenleyicisi
BigQuery tablosu yazma Projede project :

* BigQuery İş Kullanıcısı
* BigQuery Veri Düzenleyicisi

ve parentProject farklıysa project gerekli izinler

ve parentProject kimlikleriniz project farklıysa, en düşük izinleri belirlemek için aşağıdaki tabloyu kullanın:

Azure Databricks görevi Google izinleri gerekli
Gerçekleştirilmiş görünüm olmadan BigQuery tablosunu okuma Projede parentProject :

* BigQuery Okuma Oturumu Kullanıcısı

Projede project :

* BigQuery Veri Görüntüleyicisi (İsteğe bağlı olarak bunu proje düzeyi yerine veri kümesi/tablo düzeyinde verin)
Gerçekleştirilmiş görünüme sahip BigQuery tablosunu okuma Projede parentProject :

* BigQuery Okuma Oturumu Kullanıcısı
* BigQuery İş Kullanıcısı

Projede project :

* BigQuery Veri Görüntüleyicisi (İsteğe bağlı olarak bunu proje düzeyi yerine veri kümesi/tablo düzeyinde verin)

Gerçekleştirme projesinde:

* BigQuery Veri Düzenleyicisi
BigQuery tablosu yazma Projede parentProject :

* BigQuery İş Kullanıcısı

Projede project :

* BigQuery Veri Düzenleyicisi

1. Adım: Google Cloud'ı ayarlama

BigQuery Depolama API'sini etkinleştirme

BigQuery Depolama API'si, BigQuery'nin etkinleştirildiği yeni Google Cloud projelerinde varsayılan olarak etkindir. Ancak, var olan bir projeniz varsa ve BigQuery Depolama API'si etkinleştirilmediyse, bu bölümdeki adımları izleyerek etkinleştirin.

BigQuery Depolama API'sini Google Cloud CLI veya Google Cloud Console kullanarak etkinleştirebilirsiniz.

Google Cloud CLI kullanarak BigQuery Depolama API'sini etkinleştirme

gcloud services enable bigquerystorage.googleapis.com

Google Cloud Console kullanarak BigQuery Depolama API'sini etkinleştirme

  1. Sol gezinti bölmesinde API'ler ve Hizmetler'e tıklayın.

  2. APIS VE HİzMETLerİ ETKİnLEŞTİr düğmesine tıklayın.

    Google Enable Services

  3. Arama çubuğuna yazın bigquery storage api ve ilk sonucu seçin.

    Google BigQuery Depolama

  4. BigQuery Depolama API'sinin etkinleştirildiğinden emin olun.

    Google BigQuery

Azure Databricks için Google hizmet hesabı oluşturma

Azure Databricks kümesi için bir hizmet hesabı oluşturun. Databricks, bu hizmet hesabına görevlerini gerçekleştirmek için gereken en düşük ayrıcalıkların verilmesini önerir. Bkz. BigQuery Rolleri ve İzinleri.

Google Cloud CLI veya Google Cloud Console kullanarak bir hizmet hesabı oluşturabilirsiniz.

Google Cloud CLI kullanarak Google hizmet hesabı oluşturma

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"

Hizmet hesabınızın anahtarlarını oluşturun:

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

Google Cloud Console kullanarak Google hizmet hesabı oluşturma

Hesabı oluşturmak için:

  1. IAM'ye tıklayın ve sol gezinti bölmesinde Yönetici.

  2. Hizmet Hesapları'nı tıklatın.

  3. + HİzMET HESABI OLUŞTUR'a tıklayın.

  4. Hizmet hesabı adını ve açıklamasını girin.

    Google hizmet hesabı oluşturma

  5. OLUŞTUR'a tıklayın.

  6. Hizmet hesabınız için rolleri belirtin. Rol seçin açılan listesinde aşağıdaki rolleri yazın BigQuery ve ekleyin:

    Google İzinleri

  7. DEVAM'a tıklayın.

  8. YİNE'ye tıklayın.

Hizmet hesabınızın anahtarlarını oluşturmak için:

  1. Hizmet hesapları listesinde yeni oluşturduğunuz hesaba tıklayın.

  2. Anahtarlar bölümünde ANAHTAR EKLE Yeni anahtar > oluştur düğmesini seçin.

    Google Anahtar Oluştur

  3. JSON anahtar türünü kabul edin.

  4. OLUŞTUR'a tıklayın. JSON anahtar dosyası bilgisayarınıza indirilir.

    Önemli

    Hizmet hesabı için oluşturduğunuz JSON anahtar dosyası, Google Cloud hesabınızdaki veri kümelerine ve kaynaklara erişimi denetlediğinden yalnızca yetkili kullanıcılarla paylaşılması gereken özel bir anahtardır.

Geçici depolama için Google Cloud Depolama (GCS) demeti oluşturma

BigQuery'ye veri yazmak için veri kaynağının gcs demetine erişmesi gerekir.

  1. Sol gezinti bölmesinde Depolama'e tıklayın.

  2. DEMET OLUŞTUR'a tıklayın.

    Google Demet Oluştur

  3. Demet ayrıntılarını yapılandırın.

    Google Bucket Ayrıntıları

  4. OLUŞTUR'a tıklayın.

  5. İzinler sekmesine ve Üye ekle'ye tıklayın.

  6. Demetteki hizmet hesabına aşağıdaki izinleri sağlayın.

    Google Bucket İzinleri

  7. KAYDET'e tıklayın.

2. Adım: Azure Databricks'i ayarlama

Kümeyi BigQuery tablolarına erişecek şekilde yapılandırmak için JSON anahtar dosyanızı Spark yapılandırması olarak sağlamanız gerekir. JSON anahtar dosyanızı Base64 ile kodlamak için yerel bir araç kullanın. Güvenlik amacıyla anahtarlarınıza erişebilecek web tabanlı veya uzak bir araç kullanmayın.

Kümenizi yapılandırırken:

Spark Yapılandırması sekmesinde aşağıdaki Spark yapılandırmasını ekleyin. değerini Base64 ile kodlanmış JSON anahtar dosyanızın dizesiyle değiştirin<base64-keys>. Köşeli ayraç içindeki diğer öğeleri (örneğin <client-email>), JSON anahtar dosyanızdaki bu alanların değerleriyle değiştirin.

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>

BigQuery tablosuna okuma ve yazma

BigQuery tablosunu okumak için

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

BigQuery tablosuna yazmak için

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

burada<bucket-name>, geçici depolama için Google Cloud Depolama (GCS) demeti oluşturma bölümünde oluşturduğunuz demetin adıdır. ve <parent-id> değerlerine ilişkin gereksinimler hakkında bilgi edinmek için <project-id> bkz. İzinler.

BigQuery'den dış tablo oluşturma

Önemli

Bu özellik Unity Kataloğu tarafından desteklenmez.

Databricks'te verileri doğrudan BigQuery'den okuyacak yönetilmeyen bir tablo bildirebilirsiniz:

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'
)

Python not defteri örneği: DataFrame'e Google BigQuery tablosu yükleme

Aşağıdaki Python not defteri bir Google BigQuery tablosunu Azure Databricks DataFrame'e yükler.

Google BigQuery Python örnek not defteri

Not defterini alma

Scala not defteri örneği: DataFrame'e Google BigQuery tablosu yükleme

Aşağıdaki Scala not defteri bir Google BigQuery tablosunu Azure Databricks DataFrame'e yükler.

Google BigQuery Scala örnek not defteri

Not defterini alma