Sorgum, "kaynaklar aşıldı" hatasıyla başarısız oldu. Bu hatanın nedeni nedir ve nasıl düzeltebilirim?BigQuery'de "kaynaklar aşıldı" nın nedeni nedir?
cevap
Güncellemesi (2016/03/16): Çoğu sorguları için HER artık gereklidir ve aslında bu hatayı görme olasılığını artırabilir. Sorgunuzdaki her JOIN ve GROUP BY'den EACH anahtar kelimesini çıkarırsanız, sorgu motoru bu hatayı ortadan kaldırmak için sorgunuzu dinamik olarak optimize edecektir.
Hala EACH anahtar sözcüğünü belirterek bir sorgu çalıştırma (veya daha hızlı koşma) belirtebilen, ancak genellikle BigQuery ekibinin sorgunuzu, önce EACH olmadan denemenizi tavsiye ettiği köşe durumları vardır. Çok yakında, EACH anahtar sözcüğü tam bir no-op haline gelecektir.
Orjinal cevap: Eğer HER anahtar kelimeyi kullandığınızda HER TARAFINDAN HER veya GROUP JOIN veya BY yan tümcesinde anında, BigQuery bölümleri ("shuffles") verilerinizi Bir bölüm kullandığınızda göre Her çalışan görevinin, birleştirme veya toplama işleminin bölümünü yerel olarak gerçekleştirmesine izin veren anahtarları veya grup anahtarlarını birleştirin.
Kaynaklar, bu tür bir çalışan çok fazla veri aldığında ve sınırını aştığında hatayla karşılaşıldı.
Skew: Genellikle iki kategoriye, bu hata sonbaharda nedenlerini konuşan verileri (diyelim ki, bir "misafir" kullanıcı kimliği veya boş anahtarı), biri yani bir anahtar değeri doğru ağır çarpık çalışan bu anahtar için tüm kayıtları alır ve aşırı yüklenir.
Veri boyutunda ve çalışan sayısında uyuşmazlık: BigQuery'nin sorgunuzu atadığı çalışan sayısı için çok fazla veriniz.
Her iki senaryo ile başa çıkmamıza yardımcı olmak için, bu sorunlar hakkında endişelenmenize gerek kalmaması için çeşitli geliştirmeler üzerinde çalışıyoruz. Ancak, şu an için, aşağıdaki yaklaşımlardan biriyle sorunu giderebilirsiniz:
Eğri tuşları filtrele. Birleştirme sonuçlarınızın gerçek değeri boş olduğundan, verileriniz eğriyse, birleştirmeden önce
WHERE key IS NOT NULL
ekleyerek bunları filtreleyebilirsiniz. İşlenen veri miktarını azaltın. Birleştirmenin her iki yüzüneWHERE ABS(HASH(key)) % 5 == 0
ile birleştirerek birleştirmeyi yalnızca 1/5 veriye (ya da istediğiniz herhangi bir fraksiyona) uygulayın ve aynısını== 1
,== 2
,== 3
,== 4
ayrı sorgularda yapın. Sorguyu iletmek için verileri daha küçük parçalarda elle paylaşıyorsunuz - ancak aynı verileri 5 kez sorguladığınız için 5 kat daha fazla ödeme yaptığınızı unutmayın.Sorgunuzu tekrar gözden geçirin. Belki de sorgunuzu tamamen farklı bir şekilde oluşturabilir veya istediğiniz aramayı elde etmek için bazı ara sonuçları hesaplayabilirsiniz.
- 1. Java'da sıfır sıfır (0) 'nın anlamı nedir?
- 2. İstisnasız çerçeveler oluşturmamanın nedeni nedir?
- 3. headerCt.getMenu() 'nın alternatifi nedir; Ext JS 3
- 4. .NET 4.6'nın Task.CompletedTask'ın noktası nedir?
- 5. Çekirdek Verileri özelliğinin endekslenmemesinin bir nedeni nedir?
- 6. Sözdiziminin kullanılmasının nedeni nedir (0, _.Em)();
- 7. tanımsız yöntem 'map': NilClass, bunun nedeni nedir?
- 8. Kaynaklar
- 9. isnan() 'nın Swift eşdeğeri hangisidir?
- 10. "cvs dışa aktarma" nın git (1) karşılığı nedir?
- 11. View.bringToFront() 'nın karşısında Android
- 12. Aynı kod bloğu yürütme süresinin farklı nedeni nedir?
- 13. Karşılaştırma işleminden önce boolean veya null yerleştirmenin bir nedeni nedir?
- 14. nodejs/events.js 'emitMany işlevindeki dinleyici dizisinin klonlanmasının nedeni nedir?
- 15. Otomatik self (shared_from_this()) değişkeni lambda işlevinde kullanılmasının nedeni nedir?
- 16. Kaynaklar Guava
- 17. Kaynaklar Klasörü
- 18. biyoenformatik kaynaklar
- 19. MVC4 WebAPI Nedeni İfadesi?
- 20. Anahtar sekmesiNewIntent nedeni IllegalStateException
- 21. shm_open() ve ftruncate() 'nın amacı?
- 22. İşlevi öldürüldü. Hata: kota aşıldı
- 23. AWS Hatası: Aşırı hız aşıldı
- 24. Openshift veritabanı dişli kotası aşıldı
- 25. Android, bağdaştırıcı içinde paylaşılan kaynaklar
- 26. IIS SMTP: Aşıldı depolama ayırma yanıtı
- 27. Robolectric throws Kaynaklar Raw klasöründeki kaynağa erişmeye çalışırken kaynaklar $ NotFoundException
- 28. Kaynaklar/ana/kaynaklar maven ve eclipse kullanıldığında kopyalanmadı
- 29. Nedeni: java.lang.ClassNotFoundException: org.springframework.context.event.EventListenerFactory - Yaylı Batch
- 30. Servlet'in 'Zaten Yanıtlanmış' Yanıtının Nedeni
Burada belirtilen geçici çözümler üzerinde ayrıntılı bilgi verir misiniz? Ben tek bir çalışan görevi "aşırı yükleme" olmadan tür sonuçları BY TARAFINDAN benzer sonuçlar elde etmek için bazı akıllı hileler olduğunu anlamak doğru muyum? –
Güncellendi.PARTITION BY ile ilgili sorunuzu anladığımdan emin değilim, ancak PARTITION BY, GROUP EACH BY ve JOIN EACH öğelerinin aynı şekilde verileri dinamik olarak bölümlere ayırdığını ve yeni sorgu motorumuz tarafından desteklenen aynı dinamik optimizasyonlardan yarar sağladığını unutmayın. . (Başka bir deyişle: Çoğu durumda, sadece sorgunuzu yazın, EACH'yi atlayın ve BQ'nun sizin için çalışmasını sağlayın.) –