Bu konu, veri geri doldurma ile ilgili sık sorulan soruları yanıtlar.
Önce Veri geri doldurma örneklerini yönetme kullanıcı kılavuzunu okumanızı öneririz.
Saatlik veya dakikalık geri doldurma düğümlerinde paralellik neden etkili olmaz?
Bir veri zaman damgası belirttiğimde örnek neden Bekliyor (Zamanlama) durumuna geçer?
00:00 ile 01:00 saat aralığı için veri geri doldurduğumda neden birden fazla örnek oluşturulur?
Büyük ölçekli veri geri doldurma sırasında örnekler neden Bekliyor (Kaynaklar) durumuna girer?
Haftalık veya aylık düğümler için veri nasıl geri doldurulur
Veri geri doldurma nasıl çalışır?
Geçmişteki veya gelecekteki bir zaman aralığına ait verileri işlemek için veri geri doldurma özelliğini kullanabilirsiniz. Bir düğüm tarafından kullanılan zamanlama parametreleri, seçilen veri zaman damgasına göre otomatik olarak ilgili değerlerle değiştirilir. Aşağıdaki örnek, MySQL veritabanından gelen artımlı verilerin MaxCompute içinde zamana dayalı bir bölüme yazılmasını göstermektedir. Toplu senkronizasyon düğümü için zamanlama parametresi bizdate=$bizdate üç yerde yapılandırılmalıdır: 1) Veri kaynağı ayarlarında, artımlı verileri filtrelemek için STR_TO_DATE('${bizdate}','%Y%m%d') <= gmt_modify_time AND gmt_modify_time < DATE_ADD(STR_TO_DATE('${bizdate}','%Y%m%d'), interval 1 day) filtre koşulunu kullanın. 2) Veri hedefi ayarlarında, bölüm bilgisini pt=${bizdate} olarak ayarlayın ve temizleme kuralı olarak Insert Overwrite seçeneğini belirleyin. 3) Zamanlama yapılandırması panelinde, Parametreler alanına bizdate=$bizdate girin ve Sonraki gün için örnek oluştur (T+1) seçeneğini belirleyin. Her zamanlanmış çalışmanın yalnızca ilgili veri zaman damgasına ait artımlı verileri senkronize ettiğinden emin olmak için ${bizdate} değeri bu üç ayarın tümünde tutarlı olmalıdır.
Veri geri doldurma sırasında, farklı düğümler ${yyyy-mm} ve ${yyyy_mm} gibi farklı biçimlerde zamanlama parametreleriyle yapılandırılmışsa, her düğüm kendi parametre biçimine göre değerini bağımsız olarak hesaplar. Sistem, seçilen veri zaman damgasına dayanarak her düğüm için mevcut çalıştırma değerini otomatik olarak hesaplar ve atar. Farklı biçimler kullanan düğümler için ek bir uyarlama gerekmez. Bir düğümü tek başına çalıştırdığınızda beklendiği gibi çalışıyorsa, veri geri doldurma sırasında da beklendiği gibi çalışır.
Saatlik ve dakikalık düğümlerde paralelliğin başarısız olmasının nedeni
-
Belirti
Saatlik veya dakikalık olarak zamanlanan bir düğüm için, veri geri doldurma için paralelliği etkinleştirdiğinizde bile örnekler paralel olarak çalışmaz.
-
Neden
Veri geri doldurma için paralellik ayarı, günlük granülerliğindeki bir veri zaman damgası aralığına ait örneklerin eşzamanlı olarak çalışıp çalışmayacağını belirler. Saatlik veya dakikalık düzeydeki düğümler için aynı gün içindeki örneklerin eşzamanlılığını kontrol etmez. Bu düğümlerin gün içi eşzamanlılığı, kendine bağımlılık yapılandırılıp yapılandırılmadığına bağlıdır. Daha fazla bilgi için bkz. Senaryo 2: Önceki döngüye bağımlılık yapılandırma.
-
Çözüm
Paralelliği devre dışı bırakırsanız, farklı veri zaman damgalarına ait örnekler seri olarak çalışır. Sonraki veri zaman damgasına ait örnek, önceki örnek tamamlandıktan sonra başlar.
Paralelliği etkinleştirirseniz, birden fazla veri zaman damgasına ait veri geri doldurma örneklerini paralel olarak çalıştırmak için eşzamanlı örnek sayısını (örneğin 2, 3, 4 veya 5) ayarlayabilirsiniz.
Örnek senaryo: Saatlik veya dakikalık bir düğüm için bir haftalık veriyi geri doldurmanız gerektiğini varsayalım.
Düğümde kendine bağımlılık varsa, o haftaya ait örnekler kronolojik sırayla ardışık olarak çalışır.
Düğümde kendine bağımlılık yoksa, her güne ait tüm örnekler paralel olarak çalışır.
Örneklerin Bekliyor (Zamanlama) durumuna geçmesinin nedeni
-
Belirti
Veri geri doldurmak için bir veri zaman damgası belirttiğinizde örnek çalışmaz. Bekliyor (Zamanlama) durumunda kalır ve sarı renkle vurgulanır.
-
Neden
Bu durum, seçtiğiniz veri zaman damgasına ait zamanlanmış çalışma zamanı gelecekteyse gerçekleşir.
-
Çözüm
Bu örnekleri hemen çalıştırmak için Veri Geri Doldur iletişim kutusunda Geçerli Zamandan Sonra Çalışacak Zamanlanmış Geçmiş Örnekleri Çalıştır seçeneğini belirleyin.
NotGelecekteki bir çalışma zamanına karşılık gelen bir veri zaman damgası seçer ve bu onay kutusunu işaretlemeseniz, örnek Bekliyor (Zamanlama) durumuna girer.
Gelecekteki bir çalışma zamanına karşılık gelen bir veri zaman damgası seçer ve bu onay kutusunu işaretlerseniz, örnek hemen çalışır.
Son geri doldurmaların neden beklemede olduğu
-
Belirti
Dünün veya bugünün veri zaman damgası için veri geri doldurduğunuzda örnek Bekliyor (Zamanlama) durumuna girer.
-
Neden
Platformun zamanlaması genellikle T+1 modeline dayanır; yani dünün veri zaman damgasına sahip veriler, bugün için zamanlanan bir çalıştırma tarafından işlenir. Belirli bir veri zaman damgası için veri geri doldurduğunuzda, o tarihe ait döngü örneğini yeniden çalıştırmış olursunuz.
Bugün çalıştırılması zamanlanmış döngü örneğini bulmak için dünün veri zaman damgasına göre filtreleme yapmanız gerekir. Operation Center > Cycle Task O&M sayfasındaki Cycle Instance sayfasında, Data Timestamp filtresini Yesterday olarak ayarlayarak ilgili döngü örneklerini ve durumlarını görüntüleyin.
Bir geri doldurmanın neden birden fazla örnek oluşturduğu
-
Belirti
00:00 ile 01:00 gibi bir zaman aralığı için veri geri doldurmak birden fazla örnek oluşturur.
-
Neden
Oluşturulan örnek sayısı, düğümün zamanlama yapılandırmasına bağlıdır.
Örneğin, saatlik bir düğüm 00:00 ile 23:59 arasında her saat çalışacak şekilde zamanlanmışsa, 00:00 ile 01:00 saat aralığı için veri geri doldurmak, zamanlanmış çalışma saatleri 00:00 ve 01:00 olan iki örnek oluşturur.
Benzer şekilde, bir düğüm her 30 dakikada bir çalışacak şekilde zamanlanmışsa, 00:00 ile 01:00 saat aralığı için veri geri doldurmak, zamanlanmış çalışma saatleri 00:00, 00:30 ve 01:00 olan üç örnek oluşturur.
Büyük geri doldurmaların kaynaklar için neden beklemede olduğu
-
Belirti
Büyük ölçekli bir veri geri doldurma işlemi sırasında bazı örnekler Bekliyor (Kaynaklar) durumuna girer ve sarı renkle vurgulanır.
-
Neden
Her kaynak grubunun çalışan düğümler için maksimum bir eşzamanlılık sınırı vardır. Eşzamanlı çalışan düğüm sayısı bu sınırı aşarsa, yeni örnekler Bekliyor (Kaynaklar) durumunda kuyruğa alınır.
NotBu sorunu gidermek için bkz. Kaynaklar için bekleniyor.
"Çalışma zamanı aralık dışında" hatasının nedeni
-
Belirti
Veri geri doldurma sırasında, tetiklenen düğümün çalışma zamanının seçilen zaman aralığının dışında olduğunu belirten bir hata oluşabilir.
-
Neden
Bu hata, düğümün gerçek zamanlanmış çalışma zamanının belirttiğiniz zaman aralığının dışında kalmasından kaynaklanır. Saatlik ve dakikalık düzeydeki düğümler için veri geri doldurma amacıyla bir çalışma zamanı penceresi belirtmeniz gerekir. Örneğin, Veri Geri Doldur iletişim kutusunda Select a run time window seçeneğini
00:00 ~ 01:00olarak ayarlarsanız ancak tetiklenen düğüm farklı bir zamanda çalışacak şekilde zamanlanmışsa, geri doldurma işlemi başarısız olur. Bunu çözmek için çalışma zamanı penceresini düğümün zamanlanmış çalışma zamanını içerecek şekilde ayarlayın.
Neden geri doldurma örneği oluşturulmaz?
-
Belirti
Bir düğüm için veri geri doldurma işlemi başlattınız ancak geri doldurma örneği oluşturulmadı.
-
Neden
Veri zaman damgası düğümün etkin tarih aralığının dışındaysa örnekler oluşturulmaz. Geri doldurma için kullanılan veri zaman damgalarının düğümün etkin tarih aralığı içinde olduğundan emin olun. Düğümün zamanlama yapılandırması panelinde şu gibi ayarları görebilirsiniz: Time attribute öğesi Normal scheduling olarak ayarlanmıştır, Rerun attribute seçili değildir, Auto rerun on error seçili değildir, effective date range 1999-09-09 ile 1999-10-22 arasındadır (zamanlama yalnızca bu aralıkta etkilidir), Suspend scheduling seçili değildir, scheduling cycle Daily olarak ayarlanmıştır ve zamanlanmış saat 00:19'dur. Veri geri doldurma için kullanılan veri zaman damgası effective date range dışındaysa geri doldurma örneği oluşturulmaz.
Haftalık ve aylık düğümlerin geri doldurulması
-
Açıklama: Haftalık veya aylık düğümler için veri geri doldururken veri zaman damgasını zamanlanmış çalışma zamanından bir gün önceye ayarlamanız gerekir. Haftanın veya ayın belirli bir gününde çalışacak şekilde zamanlanan bir düğüm yalnızca belirtilen günde yürütülür. Diğer günlerde dry-run örnekleri oluşturulur ancak düğüm gerçekten çalışmaz. Böyle bir örneğin durumu haftalık veya aylık bir dry-run döngüsünü gösterir. Daha fazla bilgi için bkz. Senaryo 1: Haftalık/aylık döngü için dry run.
NotGeri doldurma için veri zaman damgası şu şekilde hesaplanır:
veri zaman damgası = Zamanlanmış çalışma tarihi - 1 gün.Zamanlama parametreleri, veri zaman damgaları, zamanlanmış saatler ve gerçek çalışma saatleri arasındaki ilişki hakkında daha fazla bilgi için bkz. Zamanlama parametreleri için desteklenen formatlar.
-
Örnek: Aylık bir düğüm için veri geri doldurma
Her ayın ilk günü saat 00:00'da çalışacak şekilde zamanlanan bir düğüm için veri zaman damgasını önceki ayın son gününe ayarlamanız gerekir. scheduling cycle öğesi Monthly olarak ayarlanmış ve çalışma zamanı
00 00 00 1 * ?olan aylık bir düğüm için, Kasım 2022 verilerini işlemek üzere Veri Geri Doldur iletişim kutusundaki Data Timestamp için hem başlangıç hem de bitiş tarihlerini 2022-11-30 olarak ayarlayın ve ardından OK tıklayın.
Paralel örnek sınırının geri doldurmaları nasıl etkilediği
Bir düğüm için maximum parallel instances ayarı etkinleştirildiğinde bu limit hem veri geri doldurma örnekleri hem de normal döngü örnekleri için geçerlidir. Aynı eşzamanlılık kotasını paylaşırlar.
Örnek eşzamanlılığı limiti aştığında sistem öncelikli olarak geçmiş veri geri doldurma örneklerini, yani bugünden önceki veri zaman damgalarına ait örnekleri kısıtlar.
Maksimum paralel örnek limiti yalnızca ayar etkinleştirildikten sonra oluşturulan örnekler için geçerlidir. Zaten çalışmakta olan veya kuyrukta bekleyen örnekler etkilenmez.
Maksimum paralel örnek değeri 1 ile 10.000 arasında olabilir ve varsayılan değer 1'dir.
OpenAPI üzerinden paralel veri geri doldurma sırasında Can't update ObjectId BeginTs less than lastCommitTs veya "ODPS-0429311 metadata transaction conflict" hatası alırsam ne yapmalıyım?
-
Neden
Paralel veri geri doldurma sırasında farklı veri zaman damgalarına ait görevler aynı anda çalışır ve tablo DDL işlemlerini içerir; örneğin eşzamanlı
ALTER TABLEdeyimleri, otomatik bir birleştirme ile manuel bir DDL işlemi arasındaki çarpışma veya örtüşen zamanlamalar. Bu durum MaxCompute meta veri işlem çatışmasına veya DDL çatışmasına neden olur. -
Çözüm
Veri geri doldurma API'sinin
Parallelismparametresinifalseolarak ayarlayın, böylece görevler seri olarak çalışır ve meta verileri eşzamanlı olarak değiştirmez. Çatışma yalnızca ara sıra meydana geliyorsa yeniden deneme genellikle sorunu çözer. -
Ek bilgiler
Parallelismdeğerinifalseolarak ayarladıktan sonra, birden fazla veri zaman damgasına ait veri geri doldurma iş akışı kesin bir seri sırada çalışır: sonraki veri zaman damgasına ait örnek, önceki veri zaman damgasına ait tüm örnekler başarılı olduktan sonra başlar. Yukarı akıştaki bir veri zaman damgasına ait bir görev başarısız olursa, aşağı akıştaki veri zaman damgalarına ait veri geri doldurma örnekleri Not Running durumunda kalır (önceki API sürümlerinde Creating olarak gösterilir). Şu anda genel görev durumunu doğrudan sorgulamak için herhangi bir API bulunmamaktadır. Yalnızca örneklerin durumunu veri zaman damgasına göre sorgulayabilirsiniz.
Yavaş çalışan bir veri geri doldurma görevini nasıl gideririm?
-
Kaynak grubu yükünü kontrol edin
Kaynak grubunun kullanımını kontrol edin. Kullanım yüksekse kaynak grubu tamamen dolmuş demektir ve görevler kuyruğa alınır. Eşzamanlı görev sayısını azaltın veya kaynak grubunu ölçeklendirin.
-
MaxCompute iş günlüğünü (Logview) analiz edin
Kaynak grubu tamamen dolu değilse ancak görev yine de yavaşsa Logview URL'sini alın ve SQL yürütme verimliliğini analiz edin. Veri şişmesinin olup olmadığını kontrol edin; örneğin çıktısı girdisinden çok daha büyük olan bir
JOINişlemi. Input bilgilerini kullanarak belirli SQL düğümünü ve ilgili tabloları konumlandırın; örneğin, join anahtar değerlerinin eşit olmayan dağılımının Kartezyen çarpıma neden olduğu bir boyut tablosunun bir gerçeklik tablosuyla birleştirilmesi. SQL optimizasyonu için MaxCompute resmi belgelerine bakın.
Veri geri doldurma sonucu ile SQL ifadesini yerel olarak çalıştırma sonucu arasındaki uyumsuzluğu nasıl gideririm?
-
Ortam tutarlılığını kontrol edin
DataWorks'teki üretim ortamınıza bağlı olan veri kaynağının, yerel olarak bağlandığınız kaynakla tam olarak aynı olup olmadığını kontrol edin. Test veritabanı ile üretim veritabanını ayırt edin.
-
Bölüm değerini kontrol edin
Veri geri doldurma görevinde kullanılan bölüm değerinin (örneğin
ds='20260212') yerel sorguda kullanılan bölüm değeriyle eşleştiğini doğrulayın. Bölüm alanını atayan mantığı ve SQL ifadesindeki veri zaman damgası formatını kontrol edin. -
Saat dilimi yapılandırmasını birleştirin
Zaman alanlarının veri geri doldurma görevindekiyle aynı şekilde ayrıştırıldığından emin olmak için yerel sorgunun başına
SET odps.sql.timezone = <saat dilimi>;(örneğinSET odps.sql.timezone = America/Cancun;) ekleyin. Bu,TO_CHARveDATEADDgibi işlevlerdeki hesaplama farklarını önler. -
Tam SQL mantığını yeniden üretin
Yalnızca hedef tablodaki satırları saymak yerine, DataWorks çalıştırma günlüğündeki tam SQL ifadesini yerel olarak çalıştırın; tüm
JOINveCASEmantığını veSETparametrelerini dahil edin. -
Konsolda doğrulayın
Yerel ortamınızdan kaynaklanan müdahaleyi ortadan kaldırmak için aynı SQL ifadesini doğrudan DataWorks konsolunda çalıştırın.