تحميل البيانات باستخدام COPY INTO مع وحدات تخزين كتالوج Unity أو المواقع الخارجية

تعرف على كيفية استخدام COPY INTO لاستيعاب البيانات في كتالوج Unity المدار أو الجداول الخارجية من أي تنسيق مصدر وملف يدعمه COPY INTO. يضيف كتالوج Unity خيارات جديدة لتكوين الوصول الآمن إلى البيانات الأولية. يمكنك استخدام وحدات تخزين كتالوج Unity أو المواقع الخارجية للوصول إلى البيانات في تخزين الكائنات السحابية.

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

توضح هذه المقالة كيفية استخدام COPY INTO الأمر لتحميل البيانات من حاوية Azure Data Lake Storage Gen2 (ADLS Gen2) في حساب Azure الخاص بك في جدول في Databricks SQL.

تفترض الخطوات الواردة في هذه المقالة أن المسؤول قد قام بتكوين وحدة تخزين كتالوج Unity أو موقع خارجي بحيث يمكنك الوصول إلى الملفات المصدر في ADLS Gen2. إذا قام المسؤول بتكوين مورد حساب لاستخدام كيان خدمة، فشاهد تحميل البيانات باستخدام COPY INTO مع كيان الخدمة أو البرنامج التعليمي: COPY INTO مع Spark SQL بدلا من ذلك. إذا أعطاك المسؤول بيانات اعتماد مؤقتة (رمز BLOB SAS المميز)، فاتبع الخطوات الواردة في تحميل البيانات باستخدام COPY INTO مع بيانات اعتماد مؤقتة بدلا من ذلك.

قبل البدء

قبل استخدام COPY INTO لتحميل البيانات من وحدة تخزين كتالوج Unity أو من مسار تخزين كائن سحابي تم تعريفه كموقع خارجي لكتالوج Unity، يجب أن يكون لديك ما يلي:

  • الامتياز READ VOLUME على وحدة تخزين أو الامتياز على READ FILES موقع خارجي.

    لمزيد من المعلومات حول إنشاء وحدات التخزين، راجع ما هي وحدات تخزين كتالوج Unity؟.

    لمزيد من المعلومات حول إنشاء مواقع خارجية، راجع إنشاء موقع خارجي لتوصيل التخزين السحابي ب Azure Databricks.

  • المسار إلى بيانات المصدر في شكل عنوان URL لتخزين كائن سحابي أو مسار وحدة تخزين.

    مثال على عنوان URL لتخزين كائن السحابة: abfss://container@storageAccount.dfs.core.windows.net/raw-data/json.

    مثال على مسار وحدة التخزين: /Volumes/quickstart_catalog/quickstart_schema/quickstart_volume/raw_data/json.

  • الامتياز USE SCHEMA على المخطط الذي يحتوي على الجدول الهدف.

  • الامتياز USE CATALOG الموجود في الكتالوج الأصل.

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

تحميل البيانات من وحدة تخزين

لتحميل البيانات من وحدة تخزين كتالوج Unity، يجب أن يكون لديك الامتياز READ VOLUME . تنطبق امتيازات وحدة التخزين على جميع الدلائل المتداخلة ضمن وحدة التخزين المحددة.

على سبيل المثال، إذا كان لديك حق الوصول إلى وحدة تخزين بالمسار /Volumes/quickstart_catalog/quickstart_schema/quickstart_volume/، فإن الأوامر التالية صالحة:

COPY INTO landing_table
FROM '/Volumes/quickstart_catalog/quickstart_schema/quickstart_volume/raw_data'
FILEFORMAT = PARQUET;

COPY INTO json_table
FROM '/Volumes/quickstart_catalog/quickstart_schema/quickstart_volume/raw_data/json'
FILEFORMAT = JSON;

اختياريا، يمكنك أيضا استخدام مسار وحدة تخزين مع نظام dbfs. على سبيل المثال، الأوامر التالية صالحة أيضا:

COPY INTO landing_table
FROM 'dbfs:/Volumes/quickstart_catalog/quickstart_schema/quickstart_volume/raw_data'
FILEFORMAT = PARQUET;

COPY INTO json_table
FROM 'dbfs:/Volumes/quickstart_catalog/quickstart_schema/quickstart_volume/raw_data/json'
FILEFORMAT = JSON;

تحميل البيانات باستخدام موقع خارجي

يقوم المثال التالي بتحميل البيانات من ADLS Gen2 إلى جدول باستخدام مواقع خارجية لكتالوج Unity لتوفير الوصول إلى التعليمات البرمجية المصدر.

COPY INTO my_json_data
FROM 'abfss://container@storageAccount.dfs.core.windows.net/jsonData'
FILEFORMAT = JSON;

توريث امتياز الموقع الخارجي

تنطبق امتيازات الموقع الخارجي على جميع الدلائل المتداخلة ضمن الموقع المحدد.

على سبيل المثال، إذا كان لديك حق الوصول إلى موقع خارجي معرف بعنوان URL abfss://container@storageAccount.dfs.core.windows.net/raw-data، فإن الأوامر التالية صالحة:

COPY INTO landing_table
FROM 'abfss://container@storageAccount.dfs.core.windows.net/raw-data'
FILEFORMAT = PARQUET;

COPY INTO json_table
FROM 'abfss://container@storageAccount.dfs.core.windows.net/raw-data/json'
FILEFORMAT = JSON;

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

COPY INTO parent_table
FROM 's3://landing-bucket'
FILEFORMAT = PARQUET;

COPY INTO sibling_table
FROM 's3://landing-bucket/json-data'
FILEFORMAT = JSON;

مساحة اسم ثلاثية المستويات للجداول الهدف

يمكنك استهداف جدول كتالوج Unity باستخدام معرف الطبقة الثلاثة (<catalog_name>.<database_name>.<table_name>). يمكنك استخدام USE CATALOG <catalog_name> الأمرين و USE <database_name> لتعيين الكتالوج الافتراضي وقاعدة البيانات للاستعلام أو دفتر الملاحظات الحالي.