Veri kümenizin boyutuna ve karmaşıklığına bağlı olarak MaxCompute SQL sorgu sonuçlarını dışa aktarmak için SQLTask, Tunnel veya DataWorks seçeneklerinden birini seçin.
Tüm SDK örnekleri Java dilini kullanır.
Genel Bakış
SQL sorgu sonuçlarını dışa aktarmak için aşağıdaki yöntemler kullanılabilir:
Küçük veri kümeleri için, sorgu sonucunun tamamını almak amacıyla SQLTask kullanın.
Bir tablonun veya bölümün tamamını dışa aktarmak için Tunnel kullanın.
Karmaşık SQL sorguları için SQLTask ve Tunnel'ı birlikte kullanın.
SQL sorgularını çalıştırmak, verileri senkronize etmek ve zamanlanmış görevler ile bağımlılıkları yapılandırmak için DataWorks kullanın.
MaxCompute verilerini hedef veri kaynağına aktarmak için açık kaynaklı DataX aracını kullanın.
SQLTask Kullanma
SQLTask SDK'sı, MaxCompute SQL arayüzünü çağırır. Bir sorgu çalıştırmak ve sonuçları almak için SQLTask.getResult(i) yöntemini çağırın.
Kullanım notları:
SQLTask.getResult(i) yalnızca SELECT sorgu sonuçlarını dışa aktarır. show tables gibi diğer komutları desteklemez.
READ_TABLE_MAX_ROW özelliği, bir SELECT ifadesinin döndürdüğü kayıt sayısını kontrol eder. Bu ayarı Proje işlemleri bölümünde yapılandırın.
SELECT ifadeleri istemciye en fazla 10.000 kayıt döndürür. SQLTask dahil olmak üzere bir istemcide SELECT ifadesi çalıştırmak,
LIMIT Neklemeye eşdeğerdir.
Tunnel Kullanma
Tüm tabloları veya belirli bölümleri Tunnel Komut satırı aracı veya Tunnel SDK ile dışa aktarın.
Aşağıdaki örnekte verileri dışa aktarmak için bir Tunnel komutu kullanılmaktadır. CLI'nin desteklemediği SDK tabanlı senaryolar için Toplu veri kanalı genel bakış konusuna bakın.
tunnel d wc_out c:\wc_out.dat;
2016-12-16 19:32:08 - new session: 201612161932082d3c9b0a012f68e7 total lines: 3
2016-12-16 19:32:08 - file [0]: [0, 3), c:\wc_out.dat
downloading 3 records into 1 file
2016-12-16 19:32:08 - file [0] start
2016-12-16 19:32:08 - file [0] OK. total: 21 bytes
download OK
SQLTask ve Tunnel'ı Birleştirme
SQLTask en fazla 10.000 kayıt döndürür. Tunnel'da böyle bir sınır yoktur. Daha büyük veri kümelerini dışa aktarmak için her ikisini de birleştirin.
Örnek:
Odps odps = OdpsUtils.newDefaultOdps(); // Initialize the Odps object.
Instance i = SQLTask.run(odps, "select * from wc_in;");
i.waitForSuccess();
// Create an InstanceTunnel.
InstanceTunnel tunnel = new InstanceTunnel(odps);
// Create a DownloadSession based on the instance ID.
InstanceTunnel.DownloadSession session = tunnel.createDownloadSession(odps.getDefaultProject(), i.getId());
long count = session.getRecordCount();
// Print the number of records.
System.out.println(count);
// The method for retrieving data is the same as with TableTunnel.
TunnelRecordReader reader = session.openRecordReader(0, count);
Record record;
while((record = reader.read()) != null)
{
for(int col = 0; col < session.getSchema().getColumns().size(); ++col)
{
// The columns in the wc_in table are all of the STRING type. You can print the output directly or write it to a local file.
System.out.println(record.get(col));
}
}
reader.close();
DataWorks veri senkronizasyonunu kullanma
Bu örnekte DataWorks temel modu kullanılmış olup genel önizleme aşamasındaki çalışma alanları için geçerli değildir. Bir çalışma alanı oluştururken Join The Public Preview Of DataStudio seçeneğini işaretlemeyin.
SQL sorgularını çalıştırmak ve veri senkronizasyon görevlerini yapılandırmak için DataWorks kullanın.
DataWorks konsolu üzerinde oturum açın.
Sol gezinme bölmesinde Workspace öğesine tıklayın.
Hedef çalışma alanının Actions sütununda Shortcuts > Data Development seçeneğini belirleyin.
-
Bir iş akışı oluşturun.
Business Flow öğesine sağ tıklayın ve Create Workflow seçeneğini seçin.
Bir Name girin.
Create düğmesine tıklayın.
-
Bir SQL düğümü oluşturun.
İş akışına sağ tıklayın ve seçeneğini belirleyin.
Name alanını runsql olarak ayarlayın ve OK düğmesine tıklayın.
ODPS SQL düğümünü yapılandırın ve Save düğmesine tıklayın.
-
Bir veri senkronizasyon düğümü oluşturun.
İş akışına sağ tıklayın ve seçeneğini belirleyin.
Name alanını sync2mysql olarak ayarlayın ve OK düğmesine tıklayın.
Veri kaynağını ve hedefi seçin.
Alan eşlemesini yapılandırın.
Kanal kontrolünü yapılandırın.
Save düğmesine tıklayın.
ODPS SQL düğümünü veri senkronizasyon düğümüne bağlayın; böylece SQL düğümü, senkronizasyon düğümünün dışa aktaracağı verileri üretir.
-
İş akışı zamanlamasını yapılandırın veya varsayılanları kullanın, ardından Run düğmesine tıklayın. Örnek çalıştırma günlükleri:
2016-12-17 23:43:46.394 [job-15598025] INFO JobContainer - Task start time : 2016-12-17 23:43:34 Task end time : 2016-12-17 23:43:46 Total time consumed : 11s Average traffic : 31.36KB/s Record write speed : 1668rec/s Total records read : 16689 Total read/write failures : 0 -
Senkronizasyon sonucunu doğrulayın:
select count(*) from result_in_db;