java在apachespark数据集上应用转换

k10s72fa  于 2021-07-09  发布在  Java
关注(0)|答案(1)|浏览(364)

我在处理一个 Dataset<Row> 在apachespark中使用java,需要对这个数据集中的所有列进行一些数学转换。基本上,其中一个转换就是获取存储在这个数据集中的所有值的日志,并且仍然返回 Dataset<Row> . 我清楚地知道如何在 map 在rdd中的函数,但如何在 Dataset<Row> ?
上下文: Dataset<Row> old 包含2列 a 以及 b . 我想还一个新的 Dataset<Row> new 有两列 a = log(a) 以及 b = log(b)

dl5txlt9

dl5txlt91#

您可以创建一个方法,将类型a[column]和类型b[column]的值作为参数并返回日志值。
假设a列和b列是long类型

public long getLog(long value){ 
// yourlogic to generate log
}

然后在数据集上应用map函数。在map函数下,您将得到类型为的值 Row 应用 getLong/getAs() 方法获取相应的值,然后将该值传递给您的自定义日志计算方法,即。 getLog 在我们的例子中,返回结果值。
你可能需要回去 Tuple2 对于值a和b列
或者你可以创造 udf spqrk sql的自定义函数然后应用 withcoumn 要应用的方法 udf 注意:udf将使用类型a[column]和类型b[column]的值作为参数并返回日志值。
希望这工作顺利

相关问题