Mam następujący kod w Spark:Spark: zlewają się bardzo powoli nawet dane wyjściowe jest bardzo małe
myData.filter(t => t.getMyEnum() == null)
.map(t => t.toString)
.saveAsTextFile("myOutput")
Istnieje 2000+ pliki w folderze myOutput, ale tylko niewielu t.getMyEnum() == null, więc istnieje tylko kilka rekordów wyjściowych. Ponieważ nie chcę szukać tylko kilka wyjść w 2000 + plików wyjściowych, próbowałem połączyć wyjście używając zlewają się jak poniżej:
myData.filter(t => t.getMyEnum() == null)
.map(t => t.toString)
.coalesce(1, false)
.saveAsTextFile("myOutput")
Wtedy praca staje się bardzo powolny! Zastanawiam się, dlaczego jest tak powolny? Było tylko kilka rekordów wyjściowych rozpraszających w 2000+ partycjach? Czy istnieje lepszy sposób na rozwiązanie tego problemu?
jest 'COALESCE (1, Shuffle = true)' 'podziale równoważne (1)'? – asmaier
Tak, to jest to samo: jeśli spojrzysz na kod źródłowy, partycja (1) domyślnie przetasowała wartość na true. – sversch