Unity Kataloğu'nda tablo oluşturma
Bu makalede, Unity Kataloğu'nda yönetilen ve dış tablolar kavramı tanıtılmaktadır ve Unity Kataloğu'nda tabloların nasıl oluşturulacağı açıklanmaktadır.
Not
Tablo oluştururken Unity Kataloğu tarafından yönetilen bir kataloğa başvurduğunuz veya varsayılan kataloğu Unity Kataloğu tarafından yönetilen bir katalog olarak ayarladığınızdan emin olun. Bkz. Varsayılan kataloğu yönetme.
Katalog hive_metastore
, Katalog Gezgini'nde görünür ancak Unity Kataloğu tarafından yönetilmediği kabul edilmez. Azure Databricks çalışma alanınızın Hive meta veri deposu tarafından yönetilir. Listelenen diğer tüm kataloglar Unity Kataloğu tarafından yönetilir.
Hive meta veri deposunda kayıtlı mevcut tabloları Unity Kataloğu'na yükseltmek için Unity Kataloğu tablo yükseltme arabirimini kullanabilirsiniz. Bkz. Hive tablolarını ve görünümlerini Unity Kataloğu'na yükseltme.
Yönetilen tablolar
Yönetilen tablolar, Unity Kataloğu'nda tablo oluşturmanın varsayılan yoludur. Unity Kataloğu, bu tablolar için yaşam döngüsünü ve dosya düzenini yönetir. Bu tablolardaki dosyaları doğrudan işlemek için Azure Databricks dışındaki araçları kullanmamalısınız.
Yönetilen tablolar, şemanın ve kataloğun nasıl yapılandırıldığına bağlı olarak meta veri deposu, katalog veya şema düzeyinde yönetilen depolamada depolanır. Bkz . Unity Kataloğu'nda yönetilen depolama konumu belirtme.
Yönetilen tablolar her zaman Delta tablo biçimini kullanır.
Yönetilen tablo bırakıldığında, temel alınan veriler 30 gün içinde bulut kiracınızdan silinir.
Dış tablolar
Dış tablolar, verileri meta veri deposu, katalog veya şema için belirtilen yönetilen depolama konumunun dışında depolanan tablolardır. Dış tabloları yalnızca Azure Databricks kümeleri veya Databricks SQL ambarları dışındaki verilere doğrudan erişmeniz gerektiğinde kullanın.
Dış tabloda çalıştırdığınızda DROP TABLE
Unity Kataloğu temel alınan verileri silmez. Tabloyu bırakmak için sahibi olmanız gerekir. Dış tablolardaki ayrıcalıkları yönetebilir ve bunları yönetilen tablolarla aynı şekilde sorgularda kullanabilirsiniz. SQL ile dış tablo oluşturmak için deyiminizde CREATE TABLE
bir LOCATION
yol belirtin. Dış tablolar aşağıdaki dosya biçimlerini kullanabilir:
- DELTA
- CSV
- JSON
- AVRO
- PARKE
- ORC
- METİN
Dış tablonun temel bulut depolama alanına erişimi yönetmek için depolama kimlik bilgilerini ve dış konumları ayarlamanız gerekir.
Daha fazla bilgi için bkz . Dış tablo oluşturma.
Gereksinimler
Tabloyu oluşturmak istediğiniz şemada ayrıcalığınız ve şemadaki USE SCHEMA
ayrıcalığınız ve USE CATALOG
üst katalogdaki ayrıcalığınız olmalıdırCREATE TABLE
.
Dış tablo oluşturuyorsanız, ek gereksinimler için bkz . Dış tablo oluşturma.
Yönetilen tablo oluşturma
Yönetilen tablo oluşturmak için aşağıdaki SQL komutunu çalıştırın. Köşeli ayraç içindeki öğeler isteğe bağlıdır. Yer tutucu değerlerini değiştirin:
<catalog-name>
: Tabloyu içerecek kataloğun adı..Bu, Azure Databricks çalışma alanınızla ilişkili Hive meta veri deposu için otomatik olarak oluşturulan katalog olamaz
hive_metastore
. Tabloyu çalışma alanının varsayılan kataloğunda oluşturuyorsanız katalog adını bırakabilirsiniz.<schema-name>
: Tabloyu içerecek şemanın adı..<table-name>
: Tablo için bir ad.<column-specification>
: Her sütunun adı ve veri türü.
SQL
CREATE TABLE <catalog-name>.<schema-name>.<table-name>
(
<column-specification>
);
Python
spark.sql("CREATE TABLE <catalog-name>.<schema-name>.<table-name> "
"("
" <column-specification>"
")")
R
library(SparkR)
sql(paste("CREATE TABLE <catalog-name>.<schema-name>.<table-name> ",
"(",
" <column-specification>",
")",
sep = ""))
Scala
spark.sql("CREATE TABLE <catalog-name>.<schema-name>.<table-name> " +
"(" +
" <column-specification>" +
")")
Databricks Terraform sağlayıcısını ve databricks_table kullanarak da yönetilen tablo oluşturabilirsiniz. databricks_tables kullanarak tablo tam adlarının listesini alabilirsiniz.
Örneğin, tabloyu main.default.department
oluşturmak ve içine beş satır eklemek için:
SQL
CREATE TABLE main.default.department
(
deptcode INT,
deptname STRING,
location STRING
);
INSERT INTO main.default.department VALUES
(10, 'FINANCE', 'EDINBURGH'),
(20, 'SOFTWARE', 'PADDINGTON'),
(30, 'SALES', 'MAIDSTONE'),
(40, 'MARKETING', 'DARLINGTON'),
(50, 'ADMIN', 'BIRMINGHAM');
Python
spark.sql("CREATE TABLE main.default.department "
"("
" deptcode INT,"
" deptname STRING,"
" location STRING"
")"
"INSERT INTO main.default.department VALUES "
" (10, 'FINANCE', 'EDINBURGH'),"
" (20, 'SOFTWARE', 'PADDINGTON'),"
" (30, 'SALES', 'MAIDSTONE'),"
" (40, 'MARKETING', 'DARLINGTON'),"
" (50, 'ADMIN', 'BIRMINGHAM')")
R
library(SparkR)
sql(paste("CREATE TABLE main.default.department ",
"(",
" deptcode INT,",
" deptname STRING,",
" location STRING",
")",
"INSERT INTO main.default.department VALUES ",
" (10, 'FINANCE', 'EDINBURGH'),",
" (20, 'SOFTWARE', 'PADDINGTON'),",
" (30, 'SALES', 'MAIDSTONE'),",
" (40, 'MARKETING', 'DARLINGTON'),",
" (50, 'ADMIN', 'BIRMINGHAM')",
sep = ""))
Scala
spark.sql("CREATE TABLE main.default.department " +
"(" +
" deptcode INT," +
" deptname STRING," +
" location STRING" +
")" +
"INSERT INTO main.default.department VALUES " +
" (10, 'FINANCE', 'EDINBURGH')," +
" (20, 'SOFTWARE', 'PADDINGTON')," +
" (30, 'SALES', 'MAIDSTONE')," +
" (40, 'MARKETING', 'DARLINGTON')," +
" (50, 'ADMIN', 'BIRMINGHAM')")
Yönetilen tabloyu bırakma
Tabloyu bırakmak için tablonun sahibi olmanız gerekir. Yönetilen tabloyu bırakmak için aşağıdaki SQL komutunu çalıştırın:
DROP TABLE IF EXISTS catalog_name.schema_name.table_name;
Yönetilen tablo bırakıldığında, temel alınan veriler 30 gün içinde bulut kiracınızdan silinir.
Dış tablo oluşturma
Dış tablodaki veriler bulut kiracınızdaki bir yolda depolanır. Unity Kataloğu, dış tablolarla çalışmak için dış bulut depolamaya erişmek ve bunlarla çalışmak için iki nesne sunar:
- Depolama kimlik bilgileri , bulut depolama konumuna erişmek için bir kimlik doğrulama yöntemi içerir. Depolama kimlik bilgisi, erişim izni verilen yola eşleme içermiyor. Depolama kimlik bilgileri, hangi kullanıcıların kimlik bilgilerini kullanabileceğini belirlemek için erişim denetiminden yapılır.
- Dış konum , depolama kimlik bilgilerini erişim izni verilen bir bulut depolama yolu ile eşler. Dış konum yalnızca bu bulut depolama yoluna ve içeriğine erişim verir. Dış konumlar, hangi kullanıcıların bunları kullanabileceğini belirlemek için erişim denetimindedir. SQL komutunuz bir
LOCATION
yan tümce içerdiğinde dış konum otomatik olarak kullanılır.
Gereksinimler
Dış tablo oluşturmak için aşağıdakilere sahip olmanız gerekir:
- Dış
CREATE EXTERNAL TABLE
tablo tarafından erişileneLOCATION
erişim izni veren bir dış konumdaki ayrıcalık. USE SCHEMA
Tablonun üst şeması üzerindeki izin.USE CATALOG
Tablonun üst kataloğundaki izin.CREATE TABLE
Tablonun üst şeması üzerindeki izin.
Dış konumlar ve depolama kimlik bilgileri, katalog yerine meta veri deposu düzeyinde depolanır. Depolama kimlik bilgileri oluşturmak için hesap yöneticisi olmanız veya ayrıcalığınız CREATE STORAGE CREDENTIAL
olması gerekir. Dış konum oluşturmak için meta veri deposu yöneticisi olmanız veya ayrıcalığınız CREATE EXTERNAL LOCATION
olması gerekir. Bkz. Unity Kataloğu'nu kullanarak bulut nesne depolamaya Bağlan.
Tablo oluştur
Dış tablo oluşturmak için bir not defterinde veya SQL sorgu düzenleyicisinde aşağıdaki komut örneklerinden birini kullanın.
Ayrıca depolama kimlik bilgilerini, dış konumu ve dış tabloyu oluşturmak ve bunlara yönelik izinleri yönetmek için örnek bir not defteri kullanabilirsiniz.
Aşağıdaki örneklerde yer tutucu değerlerini değiştirin:
<catalog>
: Tabloyu içerecek kataloğun adı.Bu, Azure Databricks çalışma alanınızla ilişkili Hive meta veri deposu için otomatik olarak oluşturulan katalog olamaz
hive_metastore
. Tabloyu çalışma alanının varsayılan kataloğunda oluşturuyorsanız katalog adını bırakabilirsiniz.<schema>
: Tabloyu içerecek şemanın adı.<table-name>
: Tablo için bir ad.<column-specification>
: Her sütunun adı ve veri türü.<bucket-path>
: Tablonun oluşturulacağı bulut depolama demetinin yolu.<table-directory>
: Tablonun oluşturulacağı dizin. Her tablo için benzersiz bir dizin kullanın.
Önemli
Bir yolda tablo oluşturulduktan sonra, kullanıcılar artık dış bir konumda veya depolama kimlik bilgileri üzerinde ayrıcalıklar verilmiş olsa bile Azure Databricks'ten bu yoldaki dosyalara doğrudan erişemez. Bu, kullanıcıların bulut kiracınızdaki dosyaları doğrudan okuyarak tablolara uygulanan erişim denetimlerini atlatamamasını sağlamaktır.
SQL
CREATE TABLE <catalog>.<schema>.<table-name>
(
<column-specification>
)
LOCATION 'abfss://<bucket-path>/<table-directory>';
Python
spark.sql("CREATE TABLE <catalog>.<schema>.<table-name> "
"("
" <column-specification>"
") "
"LOCATION 'abfss://<bucket-path>/<table-directory>'")
R
library(SparkR)
sql(paste("CREATE TABLE <catalog>.<schema>.<table-name> ",
"(",
" <column-specification>",
") ",
"LOCATION 'abfss://<bucket-path>/<table-directory>'",
sep = ""))
Scala
spark.sql("CREATE TABLE <catalog>.<schema>.<table-name> " +
"(" +
" <column-specification>" +
") " +
"LOCATION 'abfss://<bucket-path>/<table-directory>'")
Unity Kataloğu aşağıdaki izinlere sahip olduğunuzu denetler:
CREATE EXTERNAL TABLE
öğesini seçin.CREATE TABLE
üst şemada.USE SCHEMA
üst şemada.USE CATALOG
öğesini seçin.
Bunu yaparsanız, dış tablo oluşturulur. Aksi takdirde bir hata oluşur ve dış tablo oluşturulmaz.
Not
Bunun yerine Hive meta veri deposundaki mevcut bir dış tabloyu, verilerini yinelemeden Unity Kataloğu'na geçirebilirsiniz. Bkz . Yükseltme sihirbazını kullanarak tek bir Hive tablosunu Unity Kataloğu dış tablosuna yükseltme.
Databricks Terraform sağlayıcısını ve databricks_table kullanarak da bir dış tablo oluşturabilirsiniz. databricks_tables kullanarak tablo tam adlarının listesini alabilirsiniz.
Örnek not defteri: Dış tablolar oluşturma
Katalog, şema ve dış tablo oluşturmak ve bunlar üzerindeki izinleri yönetmek için aşağıdaki örnek not defterini kullanabilirsiniz.
Unity Kataloğu not defterinde dış tablo oluşturma ve yönetme
Bulut kiracınızda depolanan dosyalardan tablo oluşturma
Yönetilen veya dış tabloyu, bulut kiracınızda depolanan dosyalardan alınan kayıtlarla doldurabilirsiniz. Unity Kataloğu bu konumdaki dosyaları okur ve içindekileri tabloya ekler. Unity Kataloğu'nda buna yol tabanlı erişim adı verilir.
Bu bölümdeki örnekleri izleyebilir veya veri ekleme kullanıcı arabirimini kullanabilirsiniz.
Dosyaların içeriğini keşfetme
Bu verilerden tablo oluşturmadan önce bir dış konumda depolanan verileri keşfetmek için Katalog Gezgini'ni veya aşağıdaki komutları kullanabilirsiniz.
Gerekli izinler: Bu konumdaki veri dosyalarının READ FILES
listesini döndürmek için bulut depolama yolu ile ilişkilendirilmiş dış konum üzerinde izniniz olmalıdır.
Sql
Bulut depolama yolundaki dosyaları listeleyin:
LIST 'abfss://<path-to-files>';
Belirli bir yoldaki dosyalardaki verileri sorgula:
SELECT * FROM <format>.`abfss://<path-to-files>`;
Python
Bulut depolama yolundaki dosyaları listeleyin:
display(spark.sql("LIST 'abfss://<path-to-files>'"))
Belirli bir yoldaki dosyalardaki verileri sorgula:
display(spark.read.load("abfss://<path-to-files>"))
R
Bulut depolama yolundaki dosyaları listeleyin:
library(SparkR) display(sql("LIST 'abfss://<path-to-files>'"))
Belirli bir yoldaki dosyalardaki verileri sorgula:
library(SparkR) display(loadDF("abfss://<path-to-files>"))
Scala
Bulut depolama yolundaki dosyaları listeleyin:
display(spark.sql("LIST 'abfss://<path-to-files>'"))
Belirli bir yoldaki dosyalardaki verileri sorgula:
display(spark.read.load("abfss://<path-to-files>"))
Dosyalardan tablo oluşturma
Yeni bir tablo oluşturmak ve bunu bulut kiracınızdaki veri dosyalarıyla doldurmak için bu bölümdeki örnekleri izleyin.
Not
Bunun yerine Hive meta veri deposundaki mevcut bir dış tabloyu, verilerini yinelemeden Unity Kataloğu'na geçirebilirsiniz. Bkz . Yükseltme sihirbazını kullanarak tek bir Hive tablosunu Unity Kataloğu dış tablosuna yükseltme.
Önemli
- Bu yöntemi kullanarak bir tablo oluşturduğunuzda, kayıtların çoğaltılmasını önlemek için depolama yolu yalnızca bir kez okunur. Dizinin içeriğini yeniden okumak istiyorsanız tabloyu bırakmanız ve yeniden oluşturmanız gerekir. Mevcut bir tablo için, depolama yolundan kayıt ekleyebilirsiniz.
- Tablo oluşturduğunuz demet yolu, veri dosyalarını okumak veya yazmak için de kullanılamaz.
- Yalnızca tam dizindeki dosyalar okunur; okuma özyinelemeli değil.
- Aşağıdaki izinlere sahip olmanız gerekir:
USE CATALOG
üst katalogda veUSE SCHEMA
şemada.CREATE TABLE
üst şemada.READ FILES
dosyalarının bulunduğu demet yolu ile ilişkilendirilmiş dış konumda veya dış konum kullanmıyorsanız doğrudan depolama kimlik bilgileri üzerinde.- Dış tablo oluşturuyorsanız, tablonun oluşturulacağı demet yolunda olmanız gerekir
CREATE EXTERNAL TABLE
.
Yeni bir yönetilen tablo oluşturmak ve bunu bulut depolama alanınızdaki verilerle doldurmak için aşağıdaki örnekleri kullanın.
SQL
CREATE TABLE <catalog>.<schema>.<table-name>
(
<column-specification>
)
SELECT * from <format>.`abfss://<path-to-files>`;
Python
spark.sql("CREATE TABLE <catalog>.<schema>.<table-name> "
"( "
" <column-specification> "
") "
"SELECT * from <format>.`abfss://<path-to-files>`")
R
library(SparkR)
sql(paste("CREATE TABLE <catalog>.<schema>.<table-name> ",
"( ",
" <column-specification> ",
") ",
"SELECT * from <format>.`abfss://<path-to-files>`",
sep = ""))
Scala
spark.sql("CREATE TABLE <catalog>.<schema>.<table-name> " +
"( " +
" <column-specification> " +
") " +
"SELECT * from <format>.`abfss://<path-to-files>`")
Dış tablo oluşturmak ve bunu bulut depolama alanınızdaki verilerle doldurmak için bir LOCATION
yan tümcesi ekleyin:
SQL
CREATE TABLE <catalog>.<schema>.<table-name>
(
<column-specification>
)
USING <format>
LOCATION 'abfss://<table-location>'
SELECT * from <format>.`abfss://<path-to-files>`;
Python
spark.sql("CREATE TABLE <catalog>.<schema>.<table-name> "
"( "
" <column-specification> "
") "
"USING <format> "
"LOCATION 'abfss://<table-location>' "
"SELECT * from <format>.`abfss://<path-to-files>`")
R
library(SparkR)
sql(paste("CREATE TABLE <catalog>.<schema>.<table-name> ",
"( ",
" <column-specification> ",
") ",
"USING <format> ",
"LOCATION 'abfss://<table-location>' ",
"SELECT * from <format>.`abfss://<path-to-files>`",
sep = ""))
Scala
spark.sql("CREATE TABLE <catalog>.<schema>.<table-name> " +
"( " +
" <column-specification> " +
") " +
"USING <format> " +
"LOCATION 'abfss://<table-location>' " +
"SELECT * from <format>.`abfss://<path-to-files>`")
Bir yoldan var olan bir tabloya kayıt ekleme
Bir demet yolundan var olan bir tabloya kayıt eklemek için komutunu kullanın COPY INTO
. Aşağıdaki örneklerde yer tutucu değerlerini değiştirin:
<catalog>
: Tablonun üst kataloğunun adı.<schema>
: Tablonun üst şemasının adı.<path-to-files>
: Veri dosyalarını içeren demet yolu.<format>
: Dosyaların biçimi, örneğindelta
.<table-location>
: Tablonun oluşturulacağı demet yolu.
Önemli
- Bu yöntemi kullanarak bir tabloya kayıt eklediğinizde, kayıtların yinelenmesini önlemek için sağladığınız demet yolu yalnızca bir kez okunur.
- Tablo oluşturduğunuz demet yolu, veri dosyalarını okumak veya yazmak için de kullanılamaz.
- Yalnızca tam dizindeki dosyalar okunur; okuma özyinelemeli değil.
- Aşağıdaki izinlere sahip olmanız gerekir:
USE CATALOG
üst katalogda veUSE SCHEMA
şemada.MODIFY
öğesini seçin.READ FILES
dosyalarının bulunduğu demet yolu ile ilişkilendirilmiş dış konumda veya dış konum kullanmıyorsanız doğrudan depolama kimlik bilgileri üzerinde.- Dış tabloya kayıt eklemek için, tablonun bulunduğu demet yolunda olmanız gerekir
CREATE EXTERNAL TABLE
.
Demet yolundaki dosyalardan kayıtları yönetilen tabloya eklemek için, demet yolundan okumak üzere bir dış konum kullanın:
SQL
COPY INTO <catalog>.<schema>.<table>
FROM (
SELECT *
FROM 'abfss://<path-to-files>'
)
FILEFORMAT = <format>;
Python
spark.sql("COPY INTO <catalog>.<schema>.<table> "
"FROM ( "
" SELECT * "
" FROM 'abfss://<path-to-files>' "
") "
"FILEFORMAT = <format>")
R
library(SparkR)
sql(paste("COPY INTO <catalog>.<schema>.<table> ",
"FROM ( ",
" SELECT * ",
" FROM 'abfss://<path-to-files>' ",
") ",
"FILEFORMAT = <format>",
sep = ""))
Scala
spark.sql("COPY INTO <catalog>.<schema>.<table> " +
"FROM ( " +
" SELECT * " +
" FROM 'abfss://<path-to-files>' " +
") " +
"FILEFORMAT = <format>")
Dış tabloya eklemek için bir LOCATION
yan tümce ekleyin:
SQL
COPY INTO <catalog>.<schema>.<table>
LOCATION 'abfss://<table-location>'
FROM (
SELECT *
FROM 'abfss://<path-to-files>'
)
FILEFORMAT = <format>;
Python
spark.sql("COPY INTO <catalog>.<schema>.<table> "
"LOCATION 'abfss://<table-location>' "
"FROM ( "
" SELECT * "
" FROM 'abfss://<path-to-files>' "
") "
"FILEFORMAT = <format>")
R
library(SparkR)
sql(paste("COPY INTO <catalog>.<schema>.<table> ",
"LOCATION 'abfss://<table-location>' ",
"FROM ( ",
" SELECT * ",
" FROM 'abfss://<path-to-files>' ",
") ",
"FILEFORMAT = <format>",
sep = ""))
Scala
spark.sql("COPY INTO <catalog>.<schema>.<table> " +
"LOCATION 'abfss://<table-location>' " +
"FROM ( " +
" SELECT * " +
" FROM 'abfss://<path-to-files>' " +
") " +
"FILEFORMAT = <format>")
Tabloya açıklama ekleme
Tablo sahibi veya tablo üzerinde ayrıcalığı olan MODIFY
bir kullanıcı olarak, tabloya ve sütunlarına açıklamalar ekleyebilirsiniz. Aşağıdaki işlevleri kullanarak açıklamalar ekleyebilirsiniz:
- COMMENT ON komutu. Bu seçenek sütun açıklamalarını desteklemez.
COMMENT
CREATE TABLE ve ALTER TABLE komutlarını kullanma seçeneği. Bu seçenek sütun açıklamalarını destekler.- Katalog Gezgini'ndeki "el ile" açıklama alanı. Bu seçenek sütun açıklamalarını destekler. Bkz . Markdown açıklamalarını kullanarak Katalog Gezgini'nde belge verileri.
- Katalog Gezgini'nde yapay zeka tarafından oluşturulan açıklamalar (yapay zeka tarafından oluşturulan belgeler olarak da bilinir). Tablo şeması ve sütun adları gibi tablo meta verilerini dikkate alan büyük bir dil modeli (LLM) tarafından önerilen bir açıklamayı görüntüleyebilir ve açıklamayı eklemek için olduğu gibi düzenleyebilir veya kabul edebilirsiniz. Bkz. Tabloya yapay zeka tarafından oluşturulan açıklamalar ekleme.
Sonraki adımlar
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin