java遍历dataset row,Spark DataSet有效地获取整行的长度大小

我正在使用不同大小的dataSet每个具有动态列大小-对于我的应用程序,我需要知道字符的整个行长,以估计整个行大小(以字节或千字节为单位)。

整个行大小(以KB为单位)的结果将被写入新列。

private void writeMyData(Dataset dataSet){

Column[] columns = Arrays.stream(dfToWrite.columns()).map(col-> functions.col(col)).toArray(Column[]::new);

dataSet.withColumn("marker", functions.length(functions.concat_ws( dataSet.columns()[3],columns))).write().partitionBy(hivePartitionColumn)

.option("header", "true")

.mode(SaveMode.Append).format(storageFormat).save(pathTowrite);

}

由于我没有org.apache.spark.sql.functions方法的返回,Column[]

所以我不得不使用dataSet.columns()和收集它。

但是function.method每次使用嵌套操作似乎并不高效。

我宁愿获得一个函数大小,Column[]然后返回列的整个长度。而不是嵌套操作。

有什么办法可以帮助我进行此类操作的UDF功能?还是有这种功能的现有功能?

使用这种解决方案有多糟糕?

首选Java解决方案。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值