我是Spark Scala的新手。我遇到的情况是我必须比较数据集中特定列的值,例如:
Source Destination Distance
Austin Houston 200
Dallas Houston 400
Kansas Dallas 700
Source1 Destination1 Distance1 Source2 Destination2 Distance2 DistDiff
Dallas Houston 400 Kansas Dallas 700 300
根据情况,我必须比较后续行的距离,如果差异大于或等于300,则将记录保存在结果数据集中 700 - 400 = 300
我遇到的例子是具有在任何特定数据集上按行执行的函数,但我的方案是使用连续的行。
答案 0 :(得分:2)
您提到可以按日期时间对行进行排序。因此,假设它使用sortBy
或sortByKey
进行排序以创建有序 rdd,并假设您有偶数行(因此每行都有另一行)一个可以计算差异,你可以:
zipWithIndex
为每行添加索引。zip
拆分RDD在一起,创建一个Tuple2
的新RDD,左边是偶数索引行,右边是奇数索引行。map
计算每行左/右之间差异的结果。答案 1 :(得分:1)
这可以通过以下方式完成: