مشاركة عبر


Google BigQuery

توضح هذه المقالة كيفية القراءة من جداول Google BigQuery والكتابة إليها في Azure Databricks.

هام

التكوينات الموضحة في هذه المقالة تجريبية. يتم توفير الميزات التجريبية كما هي ولا تدعمها Databricks من خلال الدعم التقني للعملاء. للحصول على دعم اتحاد الاستعلام الكامل، يجب عليك بدلا من ذلك استخدام Lakehouse Federation، والذي يمكن مستخدمي Azure Databricks من الاستفادة من بناء جملة كتالوج Unity وأدوات إدارة البيانات.

يجب الاتصال ب BigQuery باستخدام المصادقة المستندة إلى المفتاح.

الأذونات

يجب أن يكون لمشاريعك أذونات Google محددة للقراءة والكتابة باستخدام BigQuery.

إشعار

تتناول هذه المقالة طرق عرض BigQuery المجسدة. للحصول على التفاصيل، راجع مقالة Google مقدمة حول طرق العرض المجسدة. لمعرفة مصطلحات BigQuery الأخرى ونموذج أمان BigQuery، راجع وثائق Google BigQuery.

تعتمد قراءة البيانات وكتابتها باستخدام BigQuery على مشروعين Google Cloud:

  • المشروع (project): معرف مشروع Google Cloud الذي يقرأ منه Azure Databricks جدول BigQuery أو يكتبه.
  • المشروع الأصل (parentProject): معرف المشروع الأصل، وهو معرف مشروع Google Cloud الذي يجب فوترته للقراءة والكتابة. قم بتعيين هذا إلى مشروع Google Cloud المرتبط بحساب خدمة Google الذي ستنشئ مفاتيح له.

يجب توفير project القيم و parentProject بشكل صريح في التعليمات البرمجية التي تصل إلى BigQuery. استخدم التعليمات البرمجية المشابهة للآتي:

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

تعتمد الأذونات المطلوبة لمشاريع Google Cloud على ما إذا كانت project متشابهة أم parentProject لا. تسرد المقاطع التالية الأذونات المطلوبة لكل سيناريو.

الأذونات المطلوبة إذا project وتطابقت parentProject

إذا كانت معرفات و project parentProject هي نفسها، فاستخدم الجدول التالي لتحديد الحد الأدنى من الأذونات:

مهمة Azure Databricks أذونات Google المطلوبة في المشروع
قراءة جدول BigQuery بدون طريقة عرض مجسدة في project المشروع:

- مستخدم جلسة عمل BigQuery Read
- عارض بيانات BigQuery (امنحه اختياريا على مستوى مجموعة البيانات/الجدول بدلا من مستوى المشروع)
قراءة جدول BigQuery بطريقة عرض مجسدة في project المشروع:

- مستخدم مهمة BigQuery
- مستخدم جلسة عمل BigQuery Read
- عارض بيانات BigQuery (امنحه اختياريا على مستوى مجموعة البيانات/الجدول بدلا من مستوى المشروع)

في مشروع التجسيد:

- محرر بيانات BigQuery
كتابة جدول BigQuery في project المشروع:

- مستخدم مهمة BigQuery
- محرر بيانات BigQuery

الأذونات المطلوبة إذا كانت project مختلفة parentProject

إذا كانت معرفات و project parentProject مختلفة، فاستخدم الجدول التالي لتحديد الحد الأدنى من الأذونات:

مهمة Azure Databricks أذونات Google المطلوبة
قراءة جدول BigQuery بدون طريقة عرض مجسدة في parentProject المشروع:

- مستخدم جلسة عمل BigQuery Read

في project المشروع:

- عارض بيانات BigQuery (امنحه اختياريا على مستوى مجموعة البيانات/الجدول بدلا من مستوى المشروع)
قراءة جدول BigQuery بطريقة عرض مجسدة في parentProject المشروع:

- مستخدم جلسة عمل BigQuery Read
- مستخدم مهمة BigQuery

في project المشروع:

- عارض بيانات BigQuery (امنحه اختياريا على مستوى مجموعة البيانات/الجدول بدلا من مستوى المشروع)

في مشروع التجسيد:

- محرر بيانات BigQuery
كتابة جدول BigQuery في parentProject المشروع:

- مستخدم مهمة BigQuery

في project المشروع:

- محرر بيانات BigQuery

الخطوة 1: إعداد Google Cloud

تمكين BigQuery Storage API

يتم تمكين BigQuery Storage API بشكل افتراضي في مشاريع Google Cloud الجديدة التي يتم فيها تمكين BigQuery. ومع ذلك، إذا كان لديك مشروع موجود ولم يتم تمكين BigQuery Storage API، فاتبع الخطوات الواردة في هذا القسم لتمكينه.

يمكنك تمكين BigQuery Storage API باستخدام Google Cloud CLI أو Google Cloud Console.

تمكين BigQuery Storage API باستخدام Google Cloud CLI

gcloud services enable bigquerystorage.googleapis.com

تمكين BigQuery Storage API باستخدام Google Cloud Console

  1. انقر فوق واجهات برمجة التطبيقات والخدمات في جزء التنقل الأيمن.

  2. انقر فوق الزر ENABLE APIS AND SERVICES.

    Google Enable Services

  3. اكتب bigquery storage api في شريط البحث وحدد النتيجة الأولى.

    Google BigQuery Storage

  4. تأكد من تمكين BigQuery Storage API.

    Google BigQuery

إنشاء حساب خدمة Google ل Azure Databricks

إنشاء حساب خدمة لنظام مجموعة Azure Databricks. توصي Databricks بإعطاء حساب الخدمة هذا أقل الامتيازات اللازمة لأداء مهامه. راجع BigQuery Roles and Permissions.

يمكنك إنشاء حساب خدمة باستخدام Google Cloud CLI أو Google Cloud Console.

إنشاء حساب خدمة Google باستخدام Google Cloud CLI

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"

إنشاء مفاتيح حساب الخدمة الخاص بك:

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

إنشاء حساب خدمة Google باستخدام Google Cloud Console

لإنشاء الحساب:

  1. انقر فوق إدارة الهوية والمسؤول في جزء التنقل الأيمن.

  2. انقر فوق حسابات الخدمة.

  3. انقر فوق + CREATE SERVICE ACCOUNT.

  4. أدخل اسم حساب الخدمة ووصفه.

    حساب خدمة إنشاء Google

  5. انقر فوق Create.

  6. حدد أدوارا لحساب الخدمة الخاص بك. في القائمة المنسدلة تحديد دور ، اكتب BigQuery الأدوار التالية وأضفها:

    أذونات Google

  7. انقر فوق Continue.

  8. انقر فوق تم.

لإنشاء مفاتيح لحساب الخدمة الخاص بك:

  1. في قائمة حسابات الخدمة، انقر فوق حسابك الذي تم إنشاؤه حديثا.

  2. في قسم Keys، حدد ADD KEY > Create new key button.

    Google Create Key

  3. اقبل نوع مفتاح JSON.

  4. انقر فوق Create. يتم تنزيل ملف مفتاح JSON على الكمبيوتر الخاص بك.

    هام

    ملف مفتاح JSON الذي تقوم بإنشائه لحساب الخدمة هو مفتاح خاص يجب مشاركته فقط مع المستخدمين المعتمدين، لأنه يتحكم في الوصول إلى مجموعات البيانات والموارد في حساب Google Cloud الخاص بك.

إنشاء مستودع Google Cloud Storage (GCS) للتخزين المؤقت

لكتابة البيانات إلى BigQuery، يحتاج مصدر البيانات إلى الوصول إلى مستودع GCS.

  1. انقر فوق Storage في جزء التنقل الأيمن.

  2. انقر فوق CREATE BUCKET.

    Google Create Bucket

  3. تكوين تفاصيل المستودع.

    تفاصيل مستودع Google

  4. انقر فوق Create.

  5. انقر فوق علامة التبويب أذونات وإضافة أعضاء.

  6. قم بتوفير الأذونات التالية لحساب الخدمة على المستودع.

    أذونات مستودع Google

  7. انقر فوق "SAVE".

الخطوة 2: إعداد Azure Databricks

لتكوين نظام مجموعة للوصول إلى جداول BigQuery، يجب توفير ملف مفتاح JSON الخاص بك كتكوين Spark. استخدم أداة محلية لترميز ملف مفتاح JSON الخاص بك بترميز Base64. لأغراض الأمان لا تستخدم أداة مستندة إلى الويب أو أداة بعيدة يمكنها الوصول إلى مفاتيحك.

عند تكوين نظام المجموعة الخاص بك:

في علامة التبويب Spark Config ، أضف تكوين Spark التالي. استبدل <base64-keys> بسلسلة ملف مفتاح JSON المشفرة Base64. استبدل العناصر الأخرى بين قوسين (مثل <client-email>) بقيم هذه الحقول من ملف مفتاح 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>

القراءة والكتابة إلى جدول BigQuery

لقراءة جدول BigQuery، حدد

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

للكتابة إلى جدول BigQuery، حدد

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

حيث <bucket-name> هو اسم المستودع الذي أنشأته في إنشاء مستودع Google Cloud Storage (GCS) للتخزين المؤقت. راجع الأذونات للتعرف على متطلبات <project-id> وقيم.<parent-id>

إنشاء جدول خارجي من BigQuery

هام

هذه الميزة غير معتمدة من قبل كتالوج Unity.

يمكنك الإعلان عن جدول غير مدار في Databricks سيقرأ البيانات مباشرة من 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'
)

مثال دفتر ملاحظات Python: تحميل جدول Google BigQuery في DataFrame

يقوم دفتر ملاحظات Python التالي بتحميل جدول Google BigQuery في Azure Databricks DataFrame.

نموذج دفتر ملاحظات Google BigQuery Python

الحصول على دفتر الملاحظات

مثال على دفتر ملاحظات Scala: تحميل جدول Google BigQuery في DataFrame

يقوم دفتر ملاحظات Scala التالي بتحميل جدول Google BigQuery في Azure Databricks DataFrame.

نموذج دفتر ملاحظات Google BigQuery Scala

الحصول على دفتر الملاحظات