المواقع الخارجية

ينطبق على:وضع علامة Databricks SQL وضع علامة Databricks Runtime وضع علامة Unity Catalog فقط

يستخدم كتالوج Unity ومخزن بيانات Azure Databricks Hive المضمن المواقع الافتراضية للجداول المدارة. يقدم كتالوج Unity العديد من الكائنات القابلة للتأمين الجديدة لمنح امتيازات للبيانات في تخزين الكائنات السحابية.

الموقع الخارجي

الموقع الخارجي هو كائن قابل للتأمين يجمع بين مسار تخزين وبيانات اعتماد تخزين تخول الوصول إلى هذا المسار.

منشئ الموقع الخارجي هو مالكه الأولي. يمكن لمالك الموقع الخارجي تعديل اسم الموقع الخارجي وURI وبيانات اعتماد التخزين.

بعد إنشاء موقع خارجي، يمكنك منح حق الوصول إليه إلى الأساسيات على مستوى الحساب (المستخدمون والمجموعات).

يمكن للمستخدم أو المجموعة التي لها إذن لاستخدام موقع خارجي الوصول إلى أي مسار تخزين داخل مسار الموقع دون الوصول المباشر إلى بيانات اعتماد التخزين.

لتحسين التحكم في الوصول بشكل أكبر، يمكنك استخدام GRANT على الجداول الخارجية لتغليف الوصول إلى الملفات الفردية داخل موقع خارجي.

أسماء المواقع الخارجية غير مؤهلة ويجب أن تكون فريدة داخل metastore.

لا يمكن احتواء مسار التخزين لأي موقع خارجي داخل مسار تخزين موقع خارجي آخر، أو داخل مسار تخزين جدول خارجي باستخدام بيانات اعتماد تخزين صريحة.

تحذير

إذا تم تسجيل مخطط (قاعدة بيانات) في Hive metastore على مستوى مساحة العمل، فإن إسقاط هذا المخطط باستخدام CASCADE الخيار يؤدي إلى حذف جميع الملفات في موقع المخطط هذا بشكل متكرر، بغض النظر عن نوع الجدول (مدار أو خارجي).

إذا تم تسجيل المخطط في مخزن بيانات تعريف كتالوج Unity، يتم حذف ملفات الجداول المدارة كتالوج Unity بشكل متكرر. ومع ذلك، لا يتم حذف ملفات الجداول الخارجية. يجب إدارة هذه الملفات باستخدام موفر التخزين السحابي مباشرة.

لذلك، لتجنب فقدان البيانات العرضي، يجب عدم تسجيل مخطط في Hive metastore إلى موقع بالبيانات الموجودة. كما يجب ألا تنشئ جداول خارجية جديدة في موقع تديره مخططات Hive metastore أو تحتوي على جداول مدارة لكتالوج Unity.

تمثيل رسومي للعلاقات

يصف الرسم التخطيطي التالي العلاقة بين:

  • بيانات اعتماد التخزين
  • المواقع الخارجية
  • جداول خارجية
  • مسارات التخزين
  • كيانات IAM
  • حسابات خدمة Azure

رسم تخطيطي ER للموقع الخارجي

الأمثلة

-- Grant `finance` user permission to create external location on `my_azure_storage_cred` storage credential, and then create an external location on the specific path to which `my_azure_storage_cred` has access
> GRANT CREATE EXTERNAL LOCATION ON STORAGE CREDENTIAL `my_azure_storage_cred` TO `finance`
> CREATE EXTERNAL LOCATION `finance_loc` URL 'abfss://container@storageaccount.dfs.core.windows.net/depts/finance'
    WITH (CREDENTIAL `my_azure_storage_cred`)
    COMMENT 'finance';

-- Grant read, write, and create table access to the finance location to `finance` user
> GRANT READ FILES, WRITE FILES, CREATE EXTERNAL TABLE ON EXTERNAL LOCATION `finance_loc` TO `finance`;

-- `finance` can read from any storage path under abfss://depts/finance but nowhere else
> SELECT count(1) FROM `delta`.`abfss://container@storageaccount.dfs.core.windows.net/depts/finance` WITH (CREDENTIAL my_azure_storage_cred);
  100
> SELECT count(1) FROM `delta`.`abfss://container@storageaccount.dfs.core.windows.net/depts/hr/employees` WITH (CREDENTIAL my_azure_storage_cred);
  Error

-- `finance` can create an external table over specific object within the `finance_loc` location
> CREATE TABLE main.default.sec_filings LOCATION 'abfss://container@storageaccount.dfs.core.windows.net/depts/finance/sec_filings';

-- Cannot list files under an external table with a user that doesn't have SELECT permission on it
> LIST 'abfss://container@storageaccount.dfs.core.windows.net/depts/finance/sec_filings'
  Error
> LIST 'abfss://container@storageaccount.dfs.core.windows.net/depts/finance/sec_filings/_delta_log'
  Error