Java 在数据集ApacheSpark上应用转换
我正在使用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类
数据集
,需要对该数据集中的所有列进行一些数学转换。基本上,转换之一是获取存储在此数据集中的所有值的日志,并且仍然返回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有许多可以使用的功能。