Aracılığıyla paylaş


Unity Kataloğu birimleri veya dış konumlarla COPY INTO kullanarak veri yükleme

COPY INTO tarafından desteklenen herhangi bir kaynak ve dosya biçiminden Unity Kataloğu yönetilen veya dış tablolara veri almak için kullanmayı COPY INTO öğrenin. Unity Kataloğu, ham verilere güvenli erişimi yapılandırmak için yeni seçenekler ekler. Unity Kataloğu birimlerini veya dış konumları kullanarak bulut nesne depolamadaki verilere erişebilirsiniz.

Databricks, kullanarak alma işleminin bir parçası olarak bulut depolamadaki dosyalara erişmek için birimlerin kullanılmasını COPY INTOönerir. Birimleri ve dış konumları kullanma önerileri hakkında daha fazla bilgi için bkz . Unity Kataloğu en iyi yöntemleri.

Bu makalede, Azure hesabınızdaki COPY INTO bir Azure Data Lake Storage 2. Nesil (ADLS 2. Nesil) kapsayıcısından Databricks SQL'deki bir tabloya veri yüklemek için komutunun nasıl kullanılacağı açıklanmaktadır.

Bu makaledeki adımlarda, yöneticinizin ADLS 2. Nesil'de kaynak dosyalarınıza erişebilmeniz için bir Unity Kataloğu birimi veya dış konumu yapılandırdığı varsayılır. Yöneticiniz bir işlem kaynağını hizmet sorumlusu kullanacak şekilde yapılandırdıysa bkz . Copy INTO kullanarak hizmet sorumlusuyla veri yükleme veya Öğretici: Spark SQL ile COPY INTO. Yöneticiniz size geçici kimlik bilgileri (Blob SAS belirteci) verdiyse, bunun yerine COPY INTO kullanarak verileri geçici kimlik bilgileriyle yükleme bölümünde verilen adımları izleyin.

Başlamadan önce

Unity Kataloğu biriminden veya Unity Kataloğu dış konumu olarak tanımlanan bir bulut nesnesi depolama yolundan veri yüklemek için kullanmadan COPY INTO önce aşağıdakilere sahip olmanız gerekir:

  • Birimdeki READ VOLUME ayrıcalık veya READ FILES dış konumdaki ayrıcalık.

    Birim oluşturma hakkında daha fazla bilgi için bkz . Unity Kataloğu birimleri nedir?.

    Dış konum oluşturma hakkında daha fazla bilgi için bkz . Bulut depolama alanını Azure Databricks'e bağlamak için dış konum oluşturma.

  • Bulut nesnesi depolama URL'si veya birim yolu biçiminde kaynak verilerinizin yolu.

    Örnek bulut nesnesi depolama URL'si: abfss://container@storageAccount.dfs.core.windows.net/raw-data/json.

    Örnek birim yolu: /Volumes/quickstart_catalog/quickstart_schema/quickstart_volume/raw_data/json.

  • USE SCHEMA Hedef tabloyu içeren şemadaki ayrıcalık.

  • Üst USE CATALOG katalogdaki ayrıcalık.

Unity Kataloğu ayrıcalıkları hakkında daha fazla bilgi için bkz . Unity Kataloğu ayrıcalıkları ve güvenliği sağlanabilir nesneler.

Birimden veri yükleme

Unity Kataloğu biriminden veri yüklemek için ayrıcalığınız READ VOLUME olmalıdır. Birim ayrıcalıkları, belirtilen birim altındaki tüm iç içe dizinlere uygulanır.

Örneğin, yoluna /Volumes/quickstart_catalog/quickstart_schema/quickstart_volume/sahip bir birime erişiminiz varsa, aşağıdaki komutlar geçerlidir:

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;

İsteğe bağlı olarak, dbfs düzeniyle bir birim yolu da kullanabilirsiniz. Örneğin, aşağıdaki komutlar da geçerlidir:

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;

Dış konum kullanarak veri yükleme

Aşağıdaki örnek, kaynak koda erişim sağlamak için Unity Kataloğu dış konumlarını kullanarak ADLS 2. Nesil'den bir tabloya veri yükler.

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

Dış konum ayrıcalığı devralma

Dış konum ayrıcalıkları, belirtilen konum altındaki tüm iç içe dizinlere uygulanır.

Örneğin, URL abfss://container@storageAccount.dfs.core.windows.net/raw-dataile tanımlanan bir dış konuma erişiminiz varsa, aşağıdaki komutlar geçerlidir:

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;

Bu dış konumdaki izinler, belirtilen konumun üzerindeki veya paralel dizinlerde hiçbir ayrıcalık vermez. Örneğin, aşağıdaki komutların hiçbiri geçerli değildir:

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

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

Hedef tablolar için üç düzeyli ad alanı

Bir Unity Kataloğu tablosunu üç katman tanımlayıcısı (<catalog_name>.<database_name>.<table_name> ) kullanarak hedefleyebilirsiniz. geçerli sorgunuz veya not defteriniz için varsayılan kataloğu ve veritabanını ayarlamak için ve USE <database_name> komutlarını kullanabilirsinizUSE CATALOG <catalog_name>.