Aracılığıyla paylaş


Google BigQuery (veri analizi platformu)

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

Önemli

Eski sorgu federasyon belgeleri kullanımdan kaldırıldı ve güncelleştirilmeyebilir. Bu içerikte belirtilen yapılandırmalar Databricks tarafından resmi olarak onaylanmaz veya test edilmemektedir. Lakehouse Federation kaynak veritabanınızı destekliyorsa Databricks bunun yerine bunu kullanmanızı önerir.

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.

Uyarı

Bu makalede BigQuery malzemeleşmiş görünümleri ele alınmaktadır. Ayrıntılar için Malzemeleştirilmiş görünümler için giriş Google 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şlemleri için faturalandırma amacıyla kullanı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 erişen kodda project 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, project ve parentProject'in aynı olup olmamasına bağlıdır. Aşağıdaki bölümlerde her senaryo için gerekli izinler listelanmıştır.

project ve parentProject eşleşiyorsa gerekli izinler

ve project kimlikleriniz parentProject 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)
BigQuery tablosunu gerçekleştirilmiş görünüme sahip olarak 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

project ve parentProject farklıysa gerekli izinler alınmalıdır.

Kimlikleriniz project ve parentProject 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)
BigQuery tablosunu gerçekleştirilmiş görünüme sahip olarak 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'nin etkinleştirildiği yeni Google Cloud projelerinde BigQuery Depolama API'si varsayılan olarak etkindir. Ancak, var olan bir projeniz varsa ve BigQuery Depolama API'niz 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 Storage

  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. Sol gezinti bölmesinde IAM ve Yönetici'ye tıklayın.

  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çılır listesinin içine yazın ve şu rolleri ekleyin: BigQuery

    Google İzinleri

  7. DEVAM'a tıklayın.

  8. TAMAM'a 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 Storage (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'ya tıklayın.

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

    Google Demet Oluştur

  3. Kova 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. Kovadaki hizmet hesabına aşağıdaki izinleri verin.

    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 belirtin.

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

BigQuery tablosuna yazmak için belirtmeniz gerekenler:

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 Storage (GCS) demeti oluşturma bölümünde oluşturduğunuz demetin adıdır. İzinlere ve <project-id> ile <parent-id> değerlerine ilişkin gereksinimler hakkında bilgi edinmek için bkz.

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

Dizüstü bilgisayar al

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 defteri

Dizüstü bilgisayar al