gpt4 book ai didi

java - 在数据集 Apache Spark 上应用转换

转载 作者:行者123 更新时间:2023-11-30 06:57:58 25 4
gpt4 key购买 nike

我正在处理 Dataset<Row>在使用 Java 的 Apache Spark 中,需要对此数据集中的所有列进行一些数学转换。基本上,其中一个转换是获取存储在该数据集中的所有值的日志,并仍然返回 Dataset<Row> 。我清楚地看到如何在 map 中做到这一点RDD 中的函数,但是我怎样才能在 Dataset<Row> 中做到这一点? ?

上下文:Dataset<Row> old包含 2 列 ab 。我想退回一个新的Dataset<Row> new两列 a = log(a)b = log(b)

最佳答案

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

假设 a 列和 b 列的类型为 long

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

然后在数据集上应用 map 函数。在 map 函数下,您将获得 Row 类型的值,应用 getLong/getAs() 方法来获取相应的值,然后将此值传递给您的自定义日志计算方法,即 在我们的例子中,getLog 然后返回结果值。

您可能需要为值 a 和 b 列返回 Tuple2

或者您可以创建spqrk sql的udf用户定义函数,然后应用withcoumn方法来应用udf

注意 udf 将以 a [column] 和 b [column] 类型的值作为参数并返回日志值。

希望一切顺利

关于java - 在数据集 Apache Spark 上应用转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41458102/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com