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
Sol gezinti bölmesinde API'ler ve Hizmetler'e tıklayın.
APIS VE HİzMETLerİ ETKİnLEŞTİr düğmesine tıklayın.
Arama çubuğuna yazın
bigquery storage api
ve ilk sonucu seçin.BigQuery Depolama API'sinin etkinleştirildiğinden emin olun.
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:
IAM'ye tıklayın ve sol gezinti bölmesinde Yönetici.
Hizmet Hesapları'nı tıklatın.
+ HİzMET HESABI OLUŞTUR'a tıklayın.
Hizmet hesabı adını ve açıklamasını girin.
OLUŞTUR'a tıklayın.
Hizmet hesabınız için rolleri belirtin. Rol seçin açılan listesinde aşağıdaki rolleri yazın
BigQuery
ve ekleyin:DEVAM'a tıklayın.
YİNE'ye tıklayın.
Hizmet hesabınızın anahtarlarını oluşturmak için:
Hizmet hesapları listesinde yeni oluşturduğunuz hesaba tıklayın.
Anahtarlar bölümünde ANAHTAR EKLE Yeni anahtar > oluştur düğmesini seçin.
JSON anahtar türünü kabul edin.
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.
Sol gezinti bölmesinde Depolama'e tıklayın.
DEMET OLUŞTUR'a tıklayın.
Demet ayrıntılarını yapılandırın.
OLUŞTUR'a tıklayın.
İzinler sekmesine ve Üye ekle'ye tıklayın.
Demetteki hizmet hesabına aşağıdaki izinleri sağlayın.
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
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
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin