Verileri MaxCompute'e yüklemeye gerek kalmadan, Object Storage Service (OSS) veya Tablestore'da depolanan verileri sorgulamak için DataWorks'te dış tablolar oluşturabilir ve yapılandırabilirsiniz.
Genel bakış
Aşağıdaki tabloda dış tablolarla ilgili temel kavramlar açıklanmaktadır.
|
|
|
|
|
|
|
|
|
|
|
|
Aşağıdaki şekil, bir dış tablonun genel işleme mimarisini göstermektedir.
MaxCompute, OSS ve Tablestore gibi yapılandırılmamış depolama hizmetlerindeki veriler için dış tablolar oluşturabilir. Yapılandırılmamış işleme çerçevesi, MaxCompute için veri içe ve dışa aktarma işlemlerini yönetir. Aşağıdaki örnek, işleme mantığını açıklamak amacıyla bir OSS dış tablosunu kullanmaktadır:
Yapılandırılmamış çerçeve, harici OSS verilerini dönüştürür ve bu verileri Java
InputStreamsınıfı aracılığıyla özel kodunuza sunar. EXTRACT mantığını uygulayarakInputStreamüzerinden gelen girdiyi okuyabilir, ayrıştırabilir, dönüştürebilir ve hesaplayabilirsiniz; ardından MaxCompute'ün işleyebileceği evrenselRecordformatında veri döndürürsünüz.Bu kayıtlar, MaxCompute içindeki SQL mantığı kullanılarak işlenebilir. Bu hesaplama işlemi, MaxCompute'ün yerleşik yapılandırılmış SQL altyapısına dayanır ve yeni kayıtlar üretebilir.
Sistem, işlenmiş kayıtları daha fazla dönüşüm yapmak üzere özel OUTPUT mantığınıza iletir. Daha sonra sistem tarafından sağlanan
OutputStreamkullanarak kayıtlardaki gerekli bilgileri OSS'ye yazabilirsiniz.
MaxCompute entegrasyonlu DataWorks, dış tabloları görsel bir arayüz üzerinden oluşturmanıza, aramanıza, sorgulamanıza, yapılandırmanıza, işlemenize ve analiz etmenize olanak tanır.
Ağ ve erişim yetkilendirmesi
MaxCompute ve OSS bağımsız hizmetler olduğundan, kümeleri arasındaki ağ bağlantısı veri erişimini etkileyebilir. MaxCompute üzerinden OSS verilerine erişirken, -internal.aliyuncs.com ile biten bir ana bilgisayar adresi olan OSS dahili uç noktasını kullanın.
MaxCompute, OSS verilerine güvenli bir şekilde erişmek için Alibaba Cloud Resource Access Management (RAM) ve Security Token Service (STS) kullanır. İzin talep ederken MaxCompute, tabloyu oluşturan kişinin kimliğiyle STS'den izinleri alır. Tablestore için izin ayarları, OSS için olanlarla aynıdır.
-
STS yetkilendirmesi
MaxCompute'ün OSS verilerine erişim iznine sahip olması gerekir. STS, RAM tarafından sunulan ve yetkilendirilmiş bulut hizmetlerinin veya RAM kullanıcılarının özel geçerlilik süreleri ve izinleriyle geçici erişim belirteçleri yayınlamasına olanak tanıyan bir belirteç yönetimi hizmetidir. Bu belirteçleri alan uygulamalar, kaynaklara erişmek için Alibaba Cloud API'lerini çağırabilir.
İzinleri aşağıdaki yollardan biriyle verebilirsiniz:
-
MaxCompute projesi ve OSS paketi aynı Alibaba Cloud hesabına aitse, hesapla oturum açtıktan sonra tek tıkla yetkilendirme yapabilirsiniz.
Yeni bir tablo için düzenleyici sayfasını açın ve Physical Model bölümüne gidin.
Table Type seçeneği için External Table değerini seçin.
Storage Address öğesinin yanındaki Authorize seçeneğine tıklayın. Ardından tekrar Authorize seçeneğine tıklayın.
Cloud Resource Access Authorization iletişim kutusunda Authorize seçeneğine tıklayın. Yetkilendirme sayfasında, ODPS hizmetinin OSS ve Tablestore kaynaklarına erişmek için kullandığı AliyunODPSDefaultRole rolünü seçin. Ardından Confirm Authorization seçeneğine tıklayın.
-
RAM konsolunda MaxCompute'ün OSS'ye erişmesine izin vermek için özel yetkilendirme kullanın.
-
RAM konsoluna giriş yapın.
NotMaxCompute ve OSS farklı hesaplara aitse, yetkilendirmeyi vermek için OSS hesabıyla oturum açın.
Sol gezinme bölmesinde yolunu izleyin.
Create Role seçeneğine tıklayın, güvenilir varlık olarak Alibaba Cloud Account değerini seçin ve ardından Next seçeneğine tıklayın.
-
Bir Role name ve Remarks girin.
NotRol adını AliyunODPSDefaultRole veya AliyunODPSRoleForOtherUser olarak ayarlayın.
-
Select Trusted Alibaba Cloud Account seçeneği için Current Alibaba Cloud Account veya Another Alibaba Cloud Account değerini seçin.
NotAnother Alibaba Cloud Account değerini seçerseniz diğer hesabın ID bilgisini girmeniz gerekir.
OK seçeneğine tıklayın.
-
Rol ayrıntılarını yapılandırın.
Rol yönetim sayfasında RAM rolünün adına tıklayın. Trust Policy sekmesinde Edit Trust Policy seçeneğine tıklayın ve senaryonuza göre aşağıdaki ilke içeriğini girin.
-- If the MaxCompute project and OSS bucket belong to the same account. { "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "odps.aliyuncs.com" ] } } ], "Version": "1" }-- If the MaxCompute project and OSS bucket belong to different accounts. { "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "ID of the Alibaba Cloud account that owns the MaxCompute project@odps.aliyuncs.com" ] } } ], "Version": "1" }Yapılandırma tamamlandıktan sonra Save trust policy seçeneğine tıklayın.
-
Rol için bir yetkilendirme ilkesi yapılandırın. Rolün OSS'ye erişmesi için gereken AliyunODPSRolePolicy ilkesini bulun ve ekleyin. Bu ilkeyi aramayla bulamazsanız özel bir ilke oluşturabilirsiniz.
{ "Version": "1", "Statement": [ { "Action": [ "oss:ListBuckets", "oss:GetObject", "oss:ListObjects", "oss:PutObject", "oss:DeleteObject", "oss:AbortMultipartUpload", "oss:ListParts" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "ots:ListTable", "ots:DescribeTable", "ots:GetRow", "ots:PutRow", "ots:UpdateRow", "ots:DeleteRow", "ots:GetRange", "ots:BatchGetRow", "ots:BatchWriteRow", "ots:ComputeSplitPointsBySize" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "pvtz:DescribeRegions", "pvtz:DescribeZones", "pvtz:DescribeZoneInfo", "pvtz:DescribeVpcs", "pvtz:DescribeZoneRecords" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "dlf:CreateFunction", "dlf:BatchGetPartitions", "dlf:ListDatabases", "dlf:CreateLock", "dlf:UpdateFunction", "dlf:BatchUpdateTables", "dlf:DeleteTableVersion", "dlf:UpdatePartitionColumnStatistics", "dlf:ListPartitions", "dlf:DeletePartitionColumnStatistics", "dlf:BatchUpdatePartitions", "dlf:GetPartition", "dlf:BatchDeleteTableVersions", "dlf:ListFunctions", "dlf:DeleteTable", "dlf:GetTableVersion", "dlf:AbortLock", "dlf:GetTable", "dlf:BatchDeleteTables", "dlf:RenameTable", "dlf:RefreshLock", "dlf:DeletePartition", "dlf:UnLock", "dlf:GetLock", "dlf:GetDatabase", "dlf:GetFunction", "dlf:BatchCreatePartitions", "dlf:ListPartitionNames", "dlf:RenamePartition", "dlf:CreateTable", "dlf:BatchCreateTables", "dlf:UpdateTableColumnStatistics", "dlf:ListTableNames", "dlf:UpdateDatabase", "dlf:GetTableColumnStatistics", "dlf:ListFunctionNames", "dlf:ListPartitionsByFilter", "dlf:GetPartitionColumnStatistics", "dlf:CreatePartition", "dlf:CreateDatabase", "dlf:DeleteTableColumnStatistics", "dlf:ListTableVersions", "dlf:BatchDeletePartitions", "dlf:ListCatalogs", "dlf:UpdateTable", "dlf:ListTables", "dlf:DeleteDatabase", "dlf:BatchGetTables", "dlf:DeleteFunction" ], "Resource": "*", "Effect": "Allow" } ] }
-
-
-
OSS veri kaynağını kullanma
Bir OSS veri kaynağı oluşturup kaydettiyseniz Workspace list sayfasında çalışma alanınızı bulun, Management sütunundaki Operation seçeneğine tıklayın ve ardından veri kaynağını Data Source sayfasında görüntüleyip kullanın.
Dış tablo oluşturma
-
DDL ifadesi kullanarak tablo oluşturma
Data Studio sayfasına gidin. DDL ifadesi kullanarak tablo oluşturma hakkında daha fazla bilgi için bkz. MaxCompute tablolarını oluşturma ve kullanma. Yalnızca standart MaxCompute sözdizimini takip etmeniz yeterlidir. STS hizmetini başarıyla yetkilendirdiyseniz odps.properties.rolearn özelliğini ayarlamanız gerekmez.
Aşağıdaki DDL ifadesi bir dış tablo oluşturur. EXTERNAL anahtar kelimesi, tablonun bir dış tablo olduğunu belirtir.
CREATE EXTERNAL TABLE IF NOT EXISTS ambulance_data_csv_external( vehicleId int, recordId int, patientId int, calls int, locationLatitute double, locationLongtitue double, recordTime string, direction string ) STORED BY 'com.aliyun.odps.udf.example.text.TextStorageHandler' -- Required. The STORED BY clause specifies the name of a custom StorageHandler class or another file format for the external table. with SERDEPROPERTIES ( 'delimiter'='\\|', -- Optional. The SERDEPROPERTIES clause specifies the parameters used for data serialization and deserialization. These parameters can be passed to the Extractor logic through DataAttributes. 'odps.properties.rolearn'='acs:ram::xxxxxxxxxxxxx:role/aliyunodpsdefaultrole' ) LOCATION 'oss://oss-cn-shanghai-internal.aliyuncs.com/oss-odps-test/Demo/SampleData/CustomTxt/AmbulanceData/' -- Required. The LOCATION clause specifies the storage location of the external table. USING 'odps-udf-example.jar'; -- Specifies the JAR package that contains the class definition when you use a custom format. This clause is not required if you do not use a custom format.STORED BY yan tümcesi, CSV veya TSV dosyaları için yerleşik bir StorageHandler da belirtebilir:
CSV:
com.aliyun.odps.CsvStorageHandler. Bu işleyici, CSV formatlı verilerin nasıl okunup yazılacağını tanımlar. Kural gereği sütun sınırlayıcısı virgül (,) ve satır sonu yeni satır karakteridir (\n). Örnek:STORED BY 'com.aliyun.odps.CsvStorageHandler'.TSV:
com.aliyun.odps.TsvStorageHandler. Bu işleyici, TSV formatlı verilerin nasıl okunup yazılacağını tanımlar. Kural gereği sütun sınırlayıcısı sekme (\t) ve satır sonu yeni satır karakteridir (\n).
STORED BY yan tümcesi ayrıca ORC, PARQUET, SEQUENCEFILE, RCFILE, AVRO ve TEXTFILE gibi external tables for open-source formats destekler. Bir TEXTFILE için
org.apache.hive.hcatalog.data.JsonSerDegibi bir serileştirme sınıfı belirtebilirsiniz.org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe -> stored as textfile
org.apache.hadoop.hive.ql.io.orc.OrcSerde -> stored as orc
org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe -> stored as parquet
org.apache.hadoop.hive.serde2.avro.AvroSerDe -> stored as avro
org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe -> stored as sequencefile
Açık kaynak formatları için dış tablo oluşturmak üzere aşağıdaki DDL ifadesini kullanın.
CREATE EXTERNAL TABLE [IF NOT EXISTS] (<column schemas>) [PARTITIONED BY (partition column schemas)] [ROW FORMAT SERDE ''] STORED AS [WITH SERDEPROPERTIES ( 'odps.properties.rolearn'='${roleran}' [,'name2'='value2',...] ) ] LOCATION 'oss://${endpoint}/${bucket}/${userfilePath}/';Aşağıdaki tabloda SerDe özellikleri açıklanmaktadır.
Parametre
Değer
Varsayılan
Açıklama
odps.text.option.gzip.input.enabled
true/false
false
Okuma sıkıştırmasını etkinleştirir veya devre dışı bırakır.
odps.text.option.gzip.output.enabled
true/false
false
Yazma sıkıştırmasını etkinleştirir veya devre dışı bırakır.
odps.text.option.header.lines.count
Negatif olmayan bir tamsayı
0
Metin dosyası üstbilgisinin ilk N satırını atlar.
odps.text.option.null.indicator
Bir dize
Boş dize
Ayrıştırma veya yazma sırasında NULL değerini temsil eden dize.
odps.text.option.ignore.empty.lines
true/false
true
Boş satırların yoksayılıp yoksayılmayacağını belirtir.
odps.text.option.encoding
UTF-8/UTF-16/US-ASCII
UTF-8
Metnin karakter kodlamasını belirtir.
MaxCompute'teki yerleşik çıkarıcı, OSS'den yalnızca gzip ile sıkıştırılmış CSV veya TSV verilerini okumayı destekler. Dosyanın gzip ile sıkıştırılıp sıkıştırılmadığı, hangi özellikleri ayarlamanız gerektiğini belirler.
LOCATION parametresi şu formattadır: oss://oss-cn-shanghai-internal.aliyuncs.com/BucketName/DirectoryName. OSS dizin adresini grafik arayüzlü bir iletişim kutusunda seçebilirsiniz. Dizinden sonra bir dosya adı eklemeniz gerekmez.
DDL modunda oluşturulan tablolar, tablo yönetimi altındaki tablo düğüm ağacında görünür. Birinci ve ikinci düzey temalarını değiştirerek görünümlerinin konumunu değiştirebilirsiniz.
Tablestore dış tablosu
Tablestore dış tablosu oluşturmak için aşağıdaki ifadeyi kullanın.
CREATE EXTERNAL TABLE IF NOT EXISTS ots_table_external(
odps_orderkey bigint,
odps_orderdate string,
odps_custkey bigint,
odps_orderstatus string,
odps_totalprice double
)
STORED BY 'com.aliyun.odps.TableStoreStorageHandler'
WITH SERDEPROPERTIES (
'tablestore.columns.mapping'=':o_orderkey,:o_orderdate,o_custkey, o_orderstatus,o_totalprice', -- (3)
'tablestore.table.name'='ots_tpch_orders'
'odps.properties.rolearn'='acs:ram::xxxxx:role/aliyunodpsdefaultrole'
)
LOCATION 'tablestore://odps-ots-dev.cn-shanghai.ots-internal.aliyuncs.com';
Parametreler:
com.aliyun.odps.TableStoreStorageHandler, Tablestore verilerini işlemek için MaxCompute'te bulunan yerleşik StorageHandler'dır.
-
SERDEPROPERTIES yan tümcesi, parametre seçeneklerini belirtir. TableStoreStorageHandler kullanırken tablestore.columns.mapping ve tablestore.table.name olmak üzere iki seçenek belirtmeniz gerekir.
-
tablestore.columns.mapping: MaxCompute'ün erişeceği Tablestore tablosunun sütunlarını (birincil anahtarlar ve nitelikler dahil) açıklayan zorunlu bir seçenektir. İki nokta üst üste (:) öneki, bir Tablestore birincil anahtarını belirtir. Örneğin bu ifadede
:o_orderkeyve:o_orderdatebirincil anahtarlardır, diğerleri ise nitelik sütunlarıdır.Tablestore, STRING, INTEGER veya BINARY türünde bir ila dört arasında birincil anahtarı destekler. İlk birincil anahtar, bölümleme anahtarıdır. Eşlemeyi belirtirken belirtilen Tablestore tablosunun tüm birincil anahtarlarını sağlamanız gerekir. Nitelik sütunları için yalnızca MaxCompute'ün erişmesi gereken sütunları sağlamanız yeterlidir.
tablestore.table.name: Erişilecek Tablestore tablosunun adıdır. Belirtilen tablo adı yanlışsa veya mevcut değilse MaxCompute hata verir. MaxCompute otomatik olarak bir Tablestore tablosu oluşturmaz.
-
LOCATION: Tablestore örnek adını, uç nokta bilgisini ve diğer ayrıntıları belirtir.
Grafik arayüzde tablo oluşturma
Data Studio sayfasına gidin ve grafik arayüzde bir tablo oluşturun. Daha fazla bilgi için bkz. MaxCompute tablolarını oluşturma ve kullanma. Dış tablonun aşağıdaki özellikleri vardır:
-
General
İngilizce tablo adı (Create Table sırasında girilir)
Görüntülenen Ad
Birinci Düzey Tema ve İkinci Düzey Tema
Açıklama
-
Physical Model
Table Type: External Table değerini seçin.
Partition Type: Tablestore dış tabloları için bölümleme desteklenmez.
Storage Address: Bu, LOCATION parametresine karşılık gelir. LOCATION parametresini Physical Model bölümünde ayarlayabilirsiniz. Bir depolama adresi seçmek için Select seçeneğine tıklayın. Seçiminizi yaptıktan sonra Authorize seçeneğine tıklayın.
File Format: İş gereksinimlerinize göre bir format seçin. Desteklenen formatlar arasında CSV, TSV, ORC, PARQUET, SEQUENCEFILE, RCFILE, AVRO, TEXTFILE ve özel dosya formatları bulunur. Özel bir dosya formatı seçerseniz özel bir kaynak seçmeniz gerekir. Kaynağı gönderdiğinizde içerdiği sınıf adları otomatik olarak ayrıştırılır ve seçim için kullanılabilir hale gelir.
rolearn: STS yetkilendirmesi tamamlanmışsa bu parametreyi boş bırakabilirsiniz.
-
Schema : Schema bölümünde aşağıdaki alanları ekleyin:
age(BIGINT, yaş),job(STRING, meslek türü),marital(STRING, medeni durum),education(STRING, eğitim düzeyi) vedefault(STRING, kredi kartı durumu). Bu alanların hiçbiri birincil anahtar değildir.
Parametre
Açıklama
Field Type
MaxCompute 2.0, çeşitli basit ve karmaşık veri türlerini destekler.
Operation
Alan ekleme, değiştirme ve silme işlemlerini destekler.
Definition or Maximum Value Length
VARCHAR türü için uzunluğu ayarlayabilirsiniz. Karmaşık veri türleri için tür tanımını doğrudan girebilirsiniz.
Desteklenen veri türleri
Dış tablolar aşağıdaki basit veri türlerini destekler.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Dış tablolar ayrıca aşağıdaki karmaşık veri türlerini de destekler.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
TINYINT, SMALLINT, INT, FLOAT, VARCHAR, TIMESTAMP, BINARY veya karmaşık türler gibi MaxCompute 2.0 tarafından desteklenen yeni veri türlerini kullanmanız gerekiyorsa tablo oluşturma ifadesinden önce set odps.sql.type.system.odps2=true; ifadesini eklemelisiniz. Set ifadesini ve tablo oluşturma ifadesini birlikte gönderin. Hive uyumluluğu için set odps.sql.hive.compatible=true; ifadesini ekleyin.
Dış tabloları görüntüleme ve yönetme
Data Studio sayfasına gidip sol gezinme bölmesinde Table Management seçeneğine tıklayarak dış tabloları sorgulayabilirsiniz. Daha fazla bilgi için bkz. Tablo yönetimi. Dış tabloları yönetmek, iç tabloları yönetmeye benzer.