Spark数据集聚合方法

Spark dataset agg method

我正在使用 Spark 和数据集创建一些分析数据集 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" 添加一个计数时,我收到一个错误.."method overloaded..." 这意味着 dataSet 上的 agg 方法签名最多需要 4 个 Column 表达式? 无论如何,如果这种方法不是计算大量变量的最佳实践,那么哪一种是?我有计数、不同计数、总和等变量。

韩国, 斯特凡

Dataset.groupByKey returns KeyValueGroupedDataset.

此 class 没有 agg 可变参数 - 您只能提供 4 列作为参数