我正在使用不同大小的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解决方案。