aynı kavram bir başka örneği - 2 farklı sütuna sahip, - - ama demek ve bunların her birine farklı agg fonksiyonlarını uygulamak istediğiniz İşte
f.groupBy("col1").agg(sum("col2").alias("col2"), avg("col3").alias("col3"), ...)
bunu başarmak için bir yoldur yani - I gerçi henüz
aşağıdaki örneğe bakın bu durumda diğer adı nasıl ekleneceğini bilmiyorum - Öyle görünüyor Maps
val Claim1 = StructType(Seq(StructField("pid", StringType, true),StructField("diag1", StringType, true),StructField("diag2", StringType, true), StructField("allowed", IntegerType, true), StructField("allowed1", IntegerType, true)))
val claimsData1 = Seq(("PID1", "diag1", "diag2", 100, 200), ("PID1", "diag2", "diag3", 300, 600), ("PID1", "diag1", "diag5", 340, 680), ("PID2", "diag3", "diag4", 245, 490), ("PID2", "diag2", "diag1", 124, 248))
val claimRDD1 = sc.parallelize(claimsData1)
val claimRDDRow1 = claimRDD1.map(p => Row(p._1, p._2, p._3, p._4, p._5))
val claimRDD2DF1 = sqlContext.createDataFrame(claimRDDRow1, Claim1)
val l = List("allowed", "allowed1")
val exprs = l.map((_ -> "sum")).toMap
claimRDD2DF1.groupBy("pid").agg(exprs) show false
val exprs = Map("allowed" -> "sum", "allowed1" -> "avg")
claimRDD2DF1.groupBy("pid").agg(exprs) show false
kullanma 'aggregateBy' burada geçerli olacaktır. GroupBy'den daha hızlıdır (daha hızlı).Oh wait - 'DataFrame'' aggregateBy'yi göstermez - 'agg'' groupBy'ye işaret edilir. Eh bu 'DataFrames''' * yavaş * anlamına gelir .. – javadba
@javadba Hayır, sadece 'Dataset.groupBy' /' Dataset.groupByKey' ve 'RDD.groupBy' /' RDD.groupByKey' genel durumda farklı anlambilim Basit 'DataFrame' kümelenmeleri durumunda [bunu kontrol edin] (http://stackoverflow.com/a/32903568/1560062). Daha fazlası var ama burada önemli değil. – zero323
Güzel bilgi! diğer cevabınızı mahvetti – javadba