Ich arbeite an der Erstellung einiger analytische Datensätze mit Spark und DataSet-API. Ich habe zu einem Teil, wo ich einige Variablen bin calcuating und es sieht etwa so aus:Spark-Datensatz agg-Methode
CntDstCdrs1.groupByKey(x => (x.bs_recordid, x.bs_utcdate)).agg(
count(when(($"bc_sub_org_id" === lit(500) && $"bc_utcdate" >= $"day_1" && $"bc_utcdate" <= $"bs_utcdate") , $"bc_phonenum")).as[Long].name("count_phone_1day"),
count(when(($"bc_sub_org_id" === lit(500) && $"bc_utcdate" >= $"day_3" && $"bc_utcdate" <= $"bs_utcdate") , $"bc_phonenum")).as[Long].name("count_phone_3day_cust"),
count(when(($"bc_sub_org_id" === lit(500) && $"bc_utcdate" >= $"day_5" && $"bc_utcdate" <= $"bs_utcdate") , $"bc_phonenum")).as[Long].name("count_phone_5day_cust"),
count(when(($"bc_sub_org_id" === lit(500) && $"bc_utcdate" >= $"day_7" && $"bc_utcdate" <= $"bs_utcdate") , $"bc_phonenum")).as[Long].name("count_phone_7day_cust")
).show()
Dieser Code funktioniert gut, aber wenn ich versuche, eine weitere Zählung für Variable „count_phone_30day“ Ich habe einen Fehler bekommen hinzuzufügen .. "method overloaded ..." Das bedeutet, dass die agg-Methodensignatur auf dataSet maximal 4 Spaltenausdrücke akzeptiert. Wie auch immer, wenn dieser Ansatz keine optimale Methode zur Berechnung einer großen Anzahl von Variablen ist, welche wäre dann? Ich habe zählen, zählen verschiedene, Summe usw. Variablen.
KR, Stefan
Die 'Methode overloaded' Fehler wahrscheinlich durch etwas anderes verursacht wird, wie' 'agg' auf Dataset' kann mehr nehmen Art und Weise als 4 Aggregatfunktionen über 'wann'-Bedingungen. –
@LeoC kann es, aber in relationalen 'groupBy', der Schlüssel-Wert' groupByKey' hat andere Implementierung –