我正在努力使用SPARK和DATASET API创建一些分析数据集。我到了一个计算一些变量的地方,看起来像这样:
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()
此代码可以正常工作,但是当我尝试为变量" count_phone_30day"添加更多计数时,我会遇到一个错误.."方法过载..."这意味着数据集上的AGG方法签名最大为4列表达式?无论如何,如果这种方法不是计算大量变量的最佳练习,那么哪一个?我有计数,计数不同,总和等。
kr,Stefan
Dataset.groupByKey
返回 KeyValueGroupedDataset
。
此类没有带有varargs的agg
-您只能提供4列作为参数