Java 在数据集ApacheSpark上应用转换

Java 在数据集ApacheSpark上应用转换,java,apache-spark,spark-dataframe,Java,Apache Spark,Spark Dataframe,我正在使用Java在ApacheSpark中处理一个数据集,需要对该数据集中的所有列进行一些数学转换。基本上,转换之一是获取存储在此数据集中的所有值的日志,并且仍然返回Dataset。我清楚地看到如何在RDD中的映射函数中实现这一点,但如何在数据集中实现这一点 上下文:Dataset old包含两列a和b。我想返回一个新的数据集new,其中包含a=log(a)和b=log(b)您可以创建一个方法,将类型a[column]和类型b[column]的值作为参数并返回日志值 假设a列和b列为long类

我正在使用Java在ApacheSpark中处理一个
数据集
,需要对该数据集中的所有列进行一些数学转换。基本上,转换之一是获取存储在此数据集中的所有值的日志,并且仍然返回
Dataset
。我清楚地看到如何在RDD中的
映射
函数中实现这一点,但如何在
数据集
中实现这一点


上下文:
Dataset old
包含两列
a
b
。我想返回一个新的
数据集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 function下,您将获得类型为
Row
的值,并应用
getLong/getAs()
方法获取相应的值,然后将该值传递给您的自定义日志计算方法,即在本例中为
getLog
,然后返回结果值

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

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

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


希望这项工作很好

请详细说明您正在尝试做什么,到目前为止您做了什么等。Dataset有许多可以使用的功能。