Я пытаюсь получить доступ к каждой строке определенного "числа" столбца Int, чтобы проследить предыдущую строку и следующую строку в столбце чисел. Как новичок, попробовал несколько образцов, как показано ниже, но я не могу решить это. Я проверил несколько источников онлайн, но не смог исправить это. Я думаю, что список / коллекции могут работать, но я не знаю, как это реализовать. Может ли кто-нибудь помочь мне в этом.
Я попробовал следующее, но я получаю сообщение об ошибке, поскольку "Int не принимает параметры"
import org.apache.spark.sql.functions._
import org.apache.spark.sql.expressions.Window
import org.apache.spark.broadcast.Broadcast
import org.apache.spark.rdd.RDD
import org.apache.spark.sql.Row
val df = df_new.select($"tin", $"year",$"mnth",
struct($"date_begin", $"date_end",$"start",$"end",$"usage",$"numbers")
as "data").rdd.groupBy(x => (x.getString(0),x.getInt(1),x.getInt(2)))
.map( x => {
val tin = x(0).getString(0)
val year = x(0).getInt(1)
val month = x(0).getInt(2)
val use = x(0).getStruct(3).getFloat(4)
var sum:Float = 0.0F
val nums = x(0).getStruct(3).getInt(5)
for (i <- x.indices)
{
val v = x(i).getStruct(3)
val n = x(i).getStruct(3).getInt(5)
var next = n(i+1)
var prev = n(i-1)
if(nums == next || nums == prev)
{
sum = sum + v.getFloat(4)
}
else
{
sum
}
}
(tin,year,nums)
}
)
Мне нужно получить данные, как показано ниже
numbers next prev
0 1 null
1 0 0
0 1 1
1 1 0
1 0 1
0 1 1
1 1 0
1 1 1
1 1 1
1 0 1
0 null 1