الاتصال ب Google Cloud Storage
توضح هذه المقالة كيفية تكوين اتصال من Azure Databricks لقراءة وكتابة الجداول والبيانات المخزنة على Google Cloud Storage (GCS).
للقراءة أو الكتابة من مستودع GCS، يجب إنشاء حساب خدمة مرفق ويجب إقران المستودع بحساب الخدمة. يمكنك الاتصال بالمستودع مباشرة باستخدام مفتاح تنشئه لحساب الخدمة.
الوصول إلى مستودع GCS مباشرة باستخدام مفتاح حساب خدمة Google Cloud
للقراءة والكتابة مباشرة إلى مستودع، يمكنك تكوين مفتاح معرف في تكوين Spark.
الخطوة 1: إعداد حساب خدمة Google Cloud باستخدام Google Cloud Console
يجب إنشاء حساب خدمة لنظام مجموعة Azure Databricks. توصي Databricks بإعطاء حساب الخدمة هذا أقل الامتيازات اللازمة لأداء مهامه.
انقر فوق إدارة الهوية والمسؤول في جزء التنقل الأيمن.
انقر فوق حسابات الخدمة.
انقر فوق + CREATE SERVICE ACCOUNT.
أدخل اسم حساب الخدمة ووصفه.
انقر فوق Create.
انقر فوق Continue.
انقر فوق تم.
الخطوة 2: إنشاء مفتاح للوصول إلى مستودع GCS مباشرة
تحذير
مفتاح JSON الذي تقوم بإنشائه لحساب الخدمة هو مفتاح خاص يجب مشاركته فقط مع المستخدمين المعتمدين لأنه يتحكم في الوصول إلى مجموعات البيانات والموارد في حساب Google Cloud الخاص بك.
في وحدة تحكم Google Cloud، في قائمة حسابات الخدمة، انقر فوق الحساب الذي تم إنشاؤه حديثا.
في قسم Keys ، انقر فوق ADD KEY > Create new key.
اقبل نوع مفتاح JSON.
انقر فوق Create. يتم تنزيل الملف الرئيسي إلى الكمبيوتر.
الخطوة 3: تكوين مستودع GCS
إنشاء مستودع
إذا لم يكن لديك مستودع بالفعل، فقم بإنشاء مستودع:
انقر فوق Storage في جزء التنقل الأيمن.
انقر فوق CREATE BUCKET.
انقر فوق Create.
تكوين المستودع
تكوين تفاصيل المستودع.
انقر فوق علامة التبويب أذونات.
إلى جانب تسمية الأذونات، انقر فوق إضافة.
قم بتوفير إذن مسؤول التخزين لحساب الخدمة على المستودع من أدوار التخزين السحابي.
انقر فوق "SAVE".
الخطوة 4: وضع مفتاح حساب الخدمة في أسرار Databricks
توصي Databricks باستخدام النطاقات السرية لتخزين جميع بيانات الاعتماد. يمكنك وضع المفتاح الخاص ومعرف المفتاح الخاص من ملف JSON الرئيسي في نطاقات البيانات السرية Databricks. يمكنك منح المستخدمين وكيانات الخدمة والمجموعات في مساحة العمل الخاصة بك حق الوصول لقراءة النطاقات السرية. يحمي هذا مفتاح حساب الخدمة مع السماح للمستخدمين بالوصول إلى GCS. لإنشاء نطاق سري، راجع إدارة الأسرار.
الخطوة 5: تكوين مجموعة Azure Databricks
في علامة التبويب Spark Config ، قم بتكوين تكوين عمومي أو تكوين لكل دلو. تعين الأمثلة التالية المفاتيح باستخدام القيم المخزنة كأسرار Databricks.
إشعار
استخدم التحكم في الوصول إلى نظام المجموعة والتحكم في الوصول إلى دفتر الملاحظات معا لحماية الوصول إلى حساب الخدمة والبيانات في مستودع GCS. راجع حساب الأذونات والتعاون باستخدام دفاتر ملاحظات Databricks.
التكوين العمومي
استخدم هذا التكوين إذا كان يجب استخدام بيانات الاعتماد المتوفرة للوصول إلى كافة المستودعات.
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 {{secrets/scope/gsa_private_key}}
spark.hadoop.fs.gs.auth.service.account.private.key.id {{secrets/scope/gsa_private_key_id}}
استبدل <client-email>
، <project-id>
بقيم أسماء الحقول الدقيقة هذه من ملف JSON الرئيسي.
تكوين كل دلو
استخدم هذا التكوين إذا كان يجب تكوين بيانات الاعتماد لمستودعات معينة. يقوم بناء الجملة لتكوين كل مستودع بإلحاق اسم المستودع بنهاية كل تكوين، كما في المثال التالي.
هام
يمكن استخدام تكوينات كل مستودع بالإضافة إلى التكوينات العمومية. عند تحديدها، تحل التكوينات لكل مستودع محل التكوينات العمومية.
spark.hadoop.google.cloud.auth.service.account.enable.<bucket-name> true
spark.hadoop.fs.gs.auth.service.account.email.<bucket-name> <client-email>
spark.hadoop.fs.gs.project.id.<bucket-name> <project-id>
spark.hadoop.fs.gs.auth.service.account.private.key.<bucket-name> {{secrets/scope/gsa_private_key}}
spark.hadoop.fs.gs.auth.service.account.private.key.id.<bucket-name> {{secrets/scope/gsa_private_key_id}}
استبدل <client-email>
، <project-id>
بقيم أسماء الحقول الدقيقة هذه من ملف JSON الرئيسي.
الخطوة 6: القراءة من GCS
للقراءة من مستودع GCS، استخدم أمر قراءة Spark بأي تنسيق مدعوم، على سبيل المثال:
df = spark.read.format("parquet").load("gs://<bucket-name>/<path>")
للكتابة إلى مستودع GCS، استخدم أمر كتابة Spark بأي تنسيق مدعوم، على سبيل المثال:
df.write.mode("<mode>").save("gs://<bucket-name>/<path>")
استبدل <bucket-name>
باسم المستودع الذي أنشأته في الخطوة 3: تكوين مستودع GCS.