Optional aggregation columns shortcut the computation to an empty dataset
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 45/100
- Tipo di issue
- Bug
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Ferma
- Stack tecnologico
- scala, spark
- Ambito
- data, distributed-systems
Direzione di ricerca
Inizia da NonAggregateFunctionsTests.scala ed esegui il property test "Empty vararg tests" per riprodurre il risultato dell’aggregazione. Traccia il percorso di aggregazione utilizzato da TypedDataset.agg e collect, concentrandoti sui casi in cui first(ds('a')) restituisce null. Il lavoro è terminato quando tutte le colonne aggregate vengono valutate e viene restituita la tupla prevista indipendentemente dall’ordine degli aggregati.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
so it seems that if during an aggregation the first aggregate returns null, then it doesn't even care about the next results, it just returns nothing. Going to look if this is a Spark bug and not a Frameless one. Nope, the issue seems to be on our side of the fence
case class X[A,B](a: A, b: B)
val t = TypedDataset.create(X[Option[Int],Long](None, 0)::Nil)
t.show().run()
+----+---+
| a| b|
+----+---+
|null| 0|
+----+---+
scala> t.agg(first(t('a)), sum(t('b))).collect().run()
res: Seq[(Option[Int], Long)] = WrappedArray()
scala> t.agg(sum(t('b)), first(t('a))).collect().run()
res: Seq[(Long, Option[Int])] = WrappedArray((0,None))
Test that fails randomly due to this issue (NonAggregateFunctionsTests.scala).
test("Empty vararg tests") {
import frameless.functions.aggregate._
def prop[A : TypedEncoder, B: TypedEncoder](data: Vector[X2[A, B]]) = {
val ds = TypedDataset.create(data)
val frameless = ds.select(ds('a), concat(), ds('b), concatWs(":")).collect().run().toVector
val framelessAggr = ds.agg(first(ds('a)), concat(), concatWs("x"), litAggr(2)).collect().run().toVector
val scala = data.map(x => (x.a, "", x.b, ""))
val scalaAggr = if (data.nonEmpty) Vector((data.head.a, "", "", 2)) else Vector.empty
(frameless ?= scala).&&(framelessAggr ?= scalaAggr)
}
check(forAll(prop[Long, Long] _))
check(forAll(prop[Option[Vector[Boolean]], Long] _))
}
- Lingua principale
- Scala
- Stelle
- 895
- Fork
- 135
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di typelevel/frameless
-
Scala 3 buildsApertaenhancement feature help wanted
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 35/100
-
enhancement feature
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 30/100
Tutte le issue di typelevel/frameless
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno
-
Fix Math.ceilDiv wrong result for exact positive divisionsForse già presa @pamod-madubashana l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
scala-native/scala-native#5094 ·
I maintainer di solito rispondono entro 1 giorno
-
"Show threat" doesn't show the evaluation of the threatForse già presa @Zinkelburger l’ha presa 1 giorno fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
lichess-org/lila#22008 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
C21 publishes `reactivemongo/core/SSL` as Java 23 bytecode — TLS connections fail on any JDK < 23Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
ReactiveMongo/ReactiveMongo#1520 ·
I maintainer di solito rispondono entro 1 giorno
-
module: memory type: bug/reported
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 78/100
OpenXiangShan/XiangShan#6688 · 2 commenti ·
I maintainer di solito rispondono entro 2 giorni