我需要迭代一个
scala Seq
的 Row
键入直到满足特定条件。我不需要进一步处理后的条件。
我有一个
seq[Row] r
-> WrappedArray([1/1/2020,,1],[1/2/2020,pqr,1],[1/3/2020,stu,0],[1/4/2020,opq,1],[1/6/2020,lmn,0])
我想遍历这个集合 r.getInt(2)
直到我遇到 0
. 一旦我遇到 0
,我需要中断迭代并收集 r.getString(1)
在那之前。我不需要查任何其他的数据。
我的输出应该是: Array(,pqr,stu)
我是scala编程的新手。这个 seq
实际上是一个 Dataframe
. 我知道怎么用Spark处理这个 dataframes
,但由于我的组织提出了一些限制, windows
功能, createDataFrame
功能不可用/在我们的环境中工作。因此我不得不求助于 Scala
编程实现相同。
我能想到的只是下面这样的东西,但不是真的有用!
breakable{
for(i <- r)
var temp = i.getInt(3)===0
if(temp ==true)
{
val = i.getInt(2)
break()
}
}
有人能帮帮我吗!
1条答案
按热度按时间ghhkc1vu1#
你可以用
takeWhile
方法在元素的值为1时获取元素会给你什么
因此,您仍然需要获取int值为0的第一个元素,您可以按如下方式执行:
综合起来(并处理可能的零值):
结果: