Verileri OSS, Hologres, Amazon Redshift veya BigQuery gibi harici veri depolarından bir MaxCompute tablosuna veya bölümüne yüklemek için LOAD ifadesini kullanın.
Genel Bakış
MaxCompute; Hologres, OSS, Amazon Redshift ve BigQuery gibi harici depolama alanlarından CSV veya diğer açık kaynak formatındaki verileri bir MaxCompute tablosuna veya bölümüne aktarmak için LOAD OVERWRITE veya LOAD INTO komutunu kullanır.
Amazon Redshift ve BigQuery'den gelen verileri MaxCompute'a yüklemeden önce bunları öncelikle OSS'e aktarmanız gerekir.
MaxCompute, verileri bölümlendirilmiş tablolara yüklemek için dinamik bölümleme kullanır.
LOAD INTOkomutu verileri bir tabloya veya bölüme ekler.LOAD OVERWRITEkomutu ise önce tabloyu veya bölümü temizler, ardından yeni verileri ekler.
Kısıtlamalar
İzin gereksinimleri
-
MaxCompute izinleri
CreateTable ve Alter izinleri: Bir MaxCompute projesinde tablolar oluşturmak veya tablo verilerini değiştirmek için gereklidir. Talimatlar için bkz. MaxCompute izinleri.
-
Harici depolama izinleri
OSS izinleri: MaxCompute'un OSS'e erişim izni (nesneleri okuma ve listeleme) vermeniz gerekir. Gelişmiş güvenlik için yetkilendirme amacıyla STS modunu kullanın. Daha fazla bilgi için bkz. STS modunda erişimi yetkilendirme.
Hologres izinleri: MaxCompute'un Hologres'e erişimini yetkilendirmek için bir RAM rolü oluşturun, gerekli izinleri verin ve bu rolü Hologres örneğine ekleyin. Ayrıntılar için bkz. Hologres harici tablosu oluşturma (STS modu).
Diğer kısıtlamalar
LOAD komutu izin listesi/reddetme listesi parametrelerini desteklemez.
Harici depolama alanı ile hedef MaxCompute projesi aynı bölgede bulunmalıdır.
-
OSS'ten veri yüklerken:
Hedef bölümlendirilmiş tablonun şeması (bölüm sütunları hariç) harici verilerin şemasıyla eşleşmelidir. Harici verilerin şeması bölüm sütunlarını içermemelidir.
-
Hologres'ten veri yüklerken:
Hologres bölümlendirilmiş bir tablodan MaxCompute'a veri yükleyemezsiniz.
MaxCompute, çift imza yetkilendirme modunu kullanan bir Hologres harici tablosundan veri yükleyemez.
Veri yükleme
OSS ve Hologres
OSS veya Hologres'ten veri yükleme
Komut sözdizimi
{LOAD OVERWRITE|INTO} TABLE <table_name> [PARTITION (<pt_spec>)]
FROM LOCATION <external_location>
STORED BY <StorageHandler>
[WITH SERDEPROPERTIES (<Options>)];
Parametreler
OSS
Hologres
Örnekler
OSS
Bu örnek, yerleşik bir çıkarıcı (StorageHandler) kullanarak nasıl veri yükleneceğini gösterir. MaxCompute ve OSS'in aynı Alibaba Cloud hesabına ait olduğu varsayılır ve vehicle.csv dosyasındaki verilerin Alibaba Cloud dahili ağı üzerinden MaxCompute'a nasıl yükleneceği gösterilir.
-
vehicle.csv dosyasını
oss-cn-hangzhoubölgesindeki bir OSS paketininmc-test/data_location/dizinine kaydedin ve ardından OSS dizin yolunu oluşturun. OSS paketi oluşturma hakkında daha fazla bilgi için bkz. Paket oluşturma.OSS dizin yolu, paket, bölge ve uç nokta bilgileri kullanılarak aşağıdaki gibi oluşturulur:
oss://oss-cn-hangzhou-internal.aliyuncs.com/mc-test/data_location/ -
Hedef tablo
ambulance_data_csv_loadoluşturmak için MaxCompute istemcisine (odpscmd) giriş yapın. Örnek komut:CREATE TABLE ambulance_data_csv_load ( vehicleId INT, recordId INT, patientId INT, calls INT, locationLatitude DOUBLE, locationLongitude DOUBLE, recordTime STRING, direction STRING ); -
vehicle.csvdosyasını OSS'ten hedef tabloya yüklemek içinload overwritekomutunu çalıştırın. Örnek komut:LOAD OVERWRITE TABLE ambulance_data_csv_load FROM LOCATION 'oss://oss-cn-hangzhou-internal.aliyuncs.com/mc-test/data_location/' STORED BY 'com.aliyun.odps.CsvStorageHandler' WITH SERDEPROPERTIES ( -- The ARN of AliyunODPSDefaultRole. You can obtain it on the RAM role management page. 'odps.properties.rolearn'='acs:ram::xxxxx:role/aliyunodpsdefaultrole', 'odps.text.option.delimiter'=',' );Bir rolün ARN'sini görüntülemek için bkz. RAM rolünü görüntüleme.
-
Hedef tablo
ambulance_data_csv_loadiçindeki verileri doğrulayın. Örnek komut:-- Enable a full table scan. This setting is valid only for the current session. set odps.sql.allow.fullscan=true; SELECT * FROM ambulance_data_csv_load; -- The following result is returned: +------------+------------+------------+------------+------------------+-------------------+------------+------------+ | vehicleid | recordid | patientid | calls | locationlatitude | locationlongitude | recordtime | direction | +------------+------------+------------+------------+------------------+-------------------+------------+------------+ | 1 | 1 | 51 | 1 | 46.81006 | -92.08174 | 9/14/2014 0:00 | S | | 1 | 2 | 13 | 1 | 46.81006 | -92.08174 | 9/14/2014 0:00 | NE | | 1 | 3 | 48 | 1 | 46.81006 | -92.08174 | 9/14/2014 0:00 | NE | | 1 | 4 | 30 | 1 | 46.81006 | -92.08174 | 9/14/2014 0:00 | W | | 1 | 5 | 47 | 1 | 46.81006 | -92.08174 | 9/14/2014 0:00 | S | | 1 | 6 | 9 | 1 | 46.81006 | -92.08174 | 9/14/2014 0:00 | S | | 1 | 7 | 53 | 1 | 46.81006 | -92.08174 | 9/14/2014 0:00 | N | | 1 | 8 | 63 | 1 | 46.81006 | -92.08174 | 9/14/2014 0:00 | SW | | 1 | 9 | 4 | 1 | 46.81006 | -92.08174 | 9/14/2014 0:00 | NE | | 1 | 10 | 31 | 1 | 46.81006 | -92.08174 | 9/14/2014 0:00 | N | +------------+------------+------------+------------+------------------+-------------------+------------+------------+
Hologres
-
Senaryo
Bir Hologres örneği ve veritabanı oluşturulmuş ve veritabanında bir tablo oluşturulmuştur.
MaxCompute'ta bir Hologres harici tablosu oluşturulmuştur. Harici tabloyu kullanarak Hologres tablosundaki verileri sorgulayabilirsiniz.
-- Query the Hologres external table: SELECT * FROM holo_ext; -- The following result is returned: +------------+------+ | id | name | +------------+------+ | 1 | abc | | 2 | ereg | +------------+------+ -
Aşağıdaki örnek, LOAD komutunu kullanarak bu Hologres tablosundaki verileri bir MaxCompute iç tablosuna nasıl yükleyeceğinizi gösterir.
-
Bir MaxCompute iç tablosu oluşturun.
-- Create an internal table. CREATE TABLE from_holo(id BIGINT, name STRING); -
Verileri MaxCompute'a yüklemek için LOAD komutunu kullanın.
-- Load data from the Hologres table into a MaxCompute internal table. LOAD INTO TABLE from_holo FROM LOCATION 'jdbc:postgresql://hgprecn-cn-wwo3ft0l****-cn-beijing-internal.hologres.aliyuncs.com:80/<YOUR_HOLO_DB_NAME>?application_name=MaxCompute¤tSchema=public&useSSL=false&table=<YOUR_HOLOGRES_TABLE_NAME>/' STORED BY 'com.aliyun.odps.jdbc.JdbcStorageHandler' WITH SERDEPROPERTIES ( 'odps.properties.rolearn'='acs:ram::18927322887*****:role/hologresrole', 'mcfed.mapreduce.jdbc.driver.class'='org.postgresql.Driver', 'odps.federation.jdbc.target.db.type'='holo' );
-
-
Sonucu görmek için tabloyu sorgulayın.
SELECT * FROM from_holo; -- The following result is returned: +------------+------+ | id | name | +------------+------+ | 2 | ereg | | 1 | abc | +------------+------+
Diğer açık kaynak formatları
Diğer açık kaynak formatlarında veri yükleme
Yüklenecek tek bir dosyanın boyutu 3 GB'ı aşamaz. Dosya çok büyükse yüklemeden önce bölün.
Komut sözdizimi
{LOAD OVERWRITE|INTO} TABLE <table_name> [PARTITION (<pt_spec>)]
FROM LOCATION <external_location>
[ROW FORMAT SERDE '<serde_class>'
[WITH SERDEPROPERTIES (<Options>)]
]
STORED AS <file_format>;
Parametreler
Örnekler
Aynı hesap
Aynı hesap sahipliği
Bu örnek, vehicle.textfile dosyasındaki verilerin Alibaba Cloud dahili ağı üzerinden MaxCompute'a nasıl yükleneceğini gösterir.
MaxCompute ve OSS farklı Alibaba Cloud hesaplarına aitse bkz. STS modunda yetkilendirme.
-
vehicle.textfile dosyasını
oss-cn-hangzhoubölgesindeki bir OSS paketininmc-test/data_location/dizinine kaydedin ve ardından OSS dizin yolunu oluşturun. OSS paketi oluşturma hakkında daha fazla bilgi için bkz. Paket oluşturma.OSS dizin yolu, paket, bölge ve uç nokta bilgileri kullanılarak aşağıdaki gibi oluşturulur:
oss://oss-cn-hangzhou-internal.aliyuncs.com/mc-test/data_location/ -
Hedef tablo
ambulance_data_textfile_load_ptoluşturmak için MaxCompute istemcisine (odpscmd) giriş yapın. Örnek komut:CREATE TABLE ambulance_data_textfile_load_pt ( vehicleId STRING, recordId STRING, patientId STRING, calls STRING, locationLatitude STRING, locationLongitude STRING, recordTime STRING, direction STRING ) PARTITIONED BY ( ds STRING ); -
vehicle.textfiledosyasını OSS'ten hedef tabloya yüklemek içinload overwritekomutunu çalıştırın. Örnek komut:LOAD OVERWRITE TABLE ambulance_data_textfile_load_pt PARTITION(ds='20200910') FROM LOCATION 'oss://oss-cn-hangzhou-internal.aliyuncs.com/mc-test/data_location/' ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe' WITH SERDEPROPERTIES ('field.delim' = ',') STORED AS TEXTFILE; -
Hedef tablo ambulance_data_textfile_load_pt içindeki verileri doğrulayın. Örnek komut:
-- Enable a full table scan. This setting is valid only for the current session. SET odps.sql.allow.fullscan=true; SELECT * FROM ambulance_data_textfile_load_pt; -- The following result is returned: +-----------+----------+-----------+-------+------------------+-------------------+----------------+-----------+----------+ | vehicleid | recordid | patientid | calls | locationlatitude | locationlongitude | recordtime | direction | ds | +-----------+----------+-----------+-------+------------------+-------------------+----------------+-----------+----------+ | 1 | 1 | 51 | 1 | 46.81006 | -92.08174 | 9/14/2014 0:00 | S | 20200910 | | 1 | 2 | 13 | 1 | 46.81006 | -92.08174 | 9/14/2014 0:00 | NE | 20200910 | | 1 | 3 | 48 | 1 | 46.81006 | -92.08174 | 9/14/2014 0:00 | NE | 20200910 | | 1 | 4 | 30 | 1 | 46.81006 | -92.08174 | 9/14/2014 0:00 | W | 20200910 | | 1 | 5 | 47 | 1 | 46.81006 | -92.08174 | 9/14/2014 0:00 | S | 20200910 | | 1 | 6 | 9 | 1 | 46.81006 | -92.08174 | 9/14/2014 0:00 | S | 20200910 | | 1 | 7 | 53 | 1 | 46.81006 | -92.08174 | 9/14/2014 0:00 | N | 20200910 | | 1 | 8 | 63 | 1 | 46.81006 | -92.08174 | 9/14/2014 0:00 | SW | 20200910 | | 1 | 9 | 4 | 1 | 46.81006 | -92.08174 | 9/14/2014 0:00 | NE | 20200910 | | 1 | 10 | 31 | 1 | 46.81006 | -92.08174 | 9/14/2014 0:00 | N | 20200910 | +-----------+----------+-----------+-------+------------------+-------------------+----------------+-----------+----------+
Dinamik bölümler
Dinamik bölümler kullanarak veri yükleme
OSS alt dizinleriniz ds=20200909/ gibi bölüm anahtar-değer çiftlerine göre adlandırıldığında verileri yüklemek için dinamik bölümleri kullanabilirsiniz.
-
vehicle1.csv ve vehicle2.csv dosyalarını sırasıyla
oss-cn-hangzhoubölgesindeki bir OSS paketininmc-test/data_location/ds=20200909/vemc-test/data_location/ds=20200910/dizinlerine kaydedin ve ardından OSS dizin yollarını oluşturun. OSS paketi oluşturma hakkında daha fazla bilgi için bkz. Paket oluşturma.OSS dizin yolları, paket, bölge ve uç nokta bilgileri kullanılarak aşağıdaki gibi oluşturulur:
oss://oss-cn-hangzhou-internal.aliyuncs.com/mc-test/data_location/ds=20200909/' oss://oss-cn-hangzhou-internal.aliyuncs.com/mc-test/data_location/ds=20200910/' -
Hedef tablo
ambulance_data_csv_load_dynptoluşturmak için MaxCompute istemcisine (odpscmd) giriş yapın. Örnek komut:CREATE TABLE ambulance_data_csv_load_dynpt ( vehicleId STRING, recordId STRING, patientId STRING, calls STRING, locationLatitude STRING, locationLongitude STRING, recordTime STRING, direction STRING ) PARTITIONED BY ( ds STRING ); -
Dosyaları OSS'ten hedef tabloya yüklemek için
load overwritekomutunu çalıştırın. Örnek komut:LOAD OVERWRITE TABLE ambulance_data_csv_load_dynpt PARTITION(ds) FROM LOCATION 'oss://oss-cn-hangzhou-internal.aliyuncs.com/mc-test/data_location/' ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde' STORED AS TEXTFILE; -
Hedef tablo
ambulance_data_csv_load_dynptiçindeki verileri doğrulayın. Örnek komut:-- Enable a full table scan. This setting is valid only for the current session. SET odps.sql.allow.fullscan=true; SELECT * FROM ambulance_data_csv_load_dynpt; -- The following result is returned: +------------+------------+------------+------------+------------------+-------------------+----------------+------------+------------+ | vehicleid | recordid | patientid | calls | locationlatitude | locationlongitude | recordtime | direction | ds | +------------+------------+------------+------------+------------------+-------------------+----------------+------------+------------+ | 1 | 7 | 53 | 1 | 46.81006 | -92.08174 | 9/14/2014 0:00 | N | 20200909 | | 1 | 8 | 63 | 1 | 46.81006 | -92.08174 | 9/14/2014 0:00 | SW | 20200909 | | 1 | 9 | 4 | 1 | 46.81006 | -92.08174 | 9/14/2014 0:00 | NE | 20200909 | | 1 | 10 | 31 | 1 | 46.81006 | -92.08174 | 9/14/2014 0:00 | N | 20200909 | | 1 | 1 | 51 | 1 | 46.81006 | -92.08174 | 9/14/2014 0:00 | S | 20200910 | | 1 | 2 | 13 | 1 | 46.81006 | -92.08174 | 9/14/2014 0:00 | NE | 20200910 | | 1 | 3 | 48 | 1 | 46.81006 | -92.08174 | 9/14/2014 0:00 | NE | 20200910 | | 1 | 4 | 30 | 1 | 46.81006 | -92.08174 | 9/14/2014 0:00 | W | 20200910 | | 1 | 5 | 47 | 1 | 46.81006 | -92.08174 | 9/14/2014 0:00 | S | 20200910 | | 1 | 6 | 9 | 1 | 46.81006 | -92.08174 | 9/14/2014 0:00 | S | 20200910 | +------------+------------+------------+------------+------------------+-------------------+----------------+------------+------------+
Faturalama
LOAD komutu harici verileri veri ambarına yükler. Kullandıkça öde modelinde aktarılan veri hacmi için veya abonelik modelinde bireysel görevler için ücretlendirilmezsiniz ancak tüm LOAD görevleri kaynak grubunuzdan hesaplama kaynakları tüketir.
Referanslar
Bir MaxCompute projesinden OSS veya Hologres gibi harici depolama alanlarına veri aktarmak ve bu verileri diğer hesaplama motorlarının kullanmasını sağlamak için bkz. UNLOAD.