[英]Loop on SPARK DataFrame
环境:Spark 2.4 + Scala 2.11.12
我有名为 DF_ACTION 的 DF
--------------------------------------
process |action_step|MAC|action_name
----------------------------------------
HighError|1 |PQR| callAPI A
---------------------------------------
HighError|2 |PQR| callAPI B
---------------------------------------
HighError|1 |XYZ| callAPI A
---------------------------------------
HighError|2 |XYZ| callAPI B
---------------------------------------
Restart |1 |1BC| callAPI X
---------------------------------------
Restart |2 |1BC| callAPI Y
现在我正在尝试根据 DF_ACTION 的值调用一些函数并执行一些任务
for (i<-DF_ACTION){
If (i.process==="HighError" ) and (i.step_no===1) // error in this line
{
call function A
call function B
}
sleep(20 minutes)
If (i.process==="HighError" ) and (i.step_no===2) // error in this line
{
call function p
call function q
}
}
希望我能够解释问题。 提前感谢约翰
首先,您尝试的语法将不起作用,因为您无法将 DataFrame 或列与字符串或 int 进行比较
您可以先收集数据,然后遍历它们,因此现在您正在比较相似的数据类型。 请记住,如果它是一个非常大的数据集,那么使用它不是一个好主意
如果我在下面正确理解了您的问题,可以作为示例代码供您尝试
val cll = df_action.select("process", "action_step").collect
for(cl <- cll){
if (cl(0) == "HighError" && cl(1) == 1){
call function A
call function B
}
if (cl(0) == "HighError" && cl(1) == 2){
call function p
call function q
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.