spark2.3.0 的agg 方法现在限制数量

spark2.3.0 的agg 方法现在限制数量,30个可以,60个不可以,记录一下
以后agg超过30个之后需要分次处理
原代码
scala
val intervalCollectArr = df.agg(cols.toArray.head, cols.toArray.tail: _*).collect().apply(0)

修改为

scala
var len = cols.length
var intervalRDD: RDD[Row] = null
val n = 30
while(len > n) {
val cols2 = cols.toArray.take(n)
cols.remove(n)
if (intervalRDD == null) intervalRDD = df.agg(cols2.head, cols2.tail: _*).rdd
else intervalRDD = intervalRDD.zip(df.agg(cols2.head, cols2.tail: _*).rdd).map(row => {
var res = new ArrayBuffer[Any]
res ++= row._1.toSeq
res ++= row._2.toSeq
Row.fromSeq(res)
})
len -= n
}
val intervalCollectArr = intervalRDD.collect().apply(0)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值