首页 > 解决方案 > 如果数据框满足spark scala中嵌套循环内的特定条件,如何更新数据框的值

问题描述

示例数据只需要知道我们如何更新具有特定条件的 df 内的值。

我的 Df 包含一些与商店相关的数据,例如商店 id、商店名称、地址、纬度、经度 .. 我需要使用此纬度和经度查找半径

sqrt((x1-x2)^2) +((y1-y2)^2))

x1=第一行纬度,x2=第二行纬度,同样经度。这里我需要将每个商店与其他商店进行比较,所以是一个嵌套循环。

所以我将纬度和经度转换为列表,并在这两个列表的帮助下进行迭代,我已经添加了新列 Radius 和 New_ID

运行此操作后,结果的值未在数据框中更新,请帮助我,如果需要更多详细信息,请告诉我

while (i<latlist.length-1)
{
    j=1
    id=id+1    
        while(j<longlist.length)
        {
            result  = sqrt(pow(latlist(i)- latlist(j),2) + pow(longlist(i) - mylonglist(j),2))
            df3=df2.withColumn("Radius", col("Radius")+result)  

         }  j=j+1;   
         df4=  df3.filter(df3("Radius")<=1.32).withColumn("New_ID", col("New_ID")+id)     
        }
    i=i+1
}

df4.show(10) }

样本数据

StoreName StoreReg Latitude Longitude Radius New_ID Abc MH 50.5684 6.9894 0 0 Xyz DE 47.9783 7.4984 0 0 Pqr AS 67.8479 10.7029 0 0 Qwr LI 53.8733 8.8393 0 0 Dsg GY 49.0832 9.78946 0 0 Hnr TY 51.8937 8.5678 0 0 Erf ER 52.7689 7.9763 0 0

标签: scalaapache-spark

解决方案


推荐阅读