[英]How to pass dataframe to spark udf?
我想定義一個udf。 在函數主體中,它將從外部數據框中搜索數據。 我怎樣才能做到這一點? 我試圖將數據框傳遞給udf。 但這行不通。
樣例代碼:
val countryDF = spark.read
.option("inferSchema", "true")
.option("header", "true")
.csv("Country.csv")
val geo = (originString: String, dataFrame: DataFrame) => {
// Search data from countryDF
val row = dataFrame.where(col("CountryName") === originString)
if (row != Nil){
// set data to row index 2
row.getAs[String](2)
}
else{
"0"
}
}
val udfGeo = udf(geo)
val cLatitudeAndLongitude = udfGeo(countryTestDF.col("CountryName"), lit(countryDF))
countryTestDF = countryTestDF.withColumn("Latitude", cLatitudeAndLongitude)
如果要使用UDF,則必須處理列,而不要處理數據框對象。必須創建一個采用UDF輸出的新列。
def geo(originString : String, CountryName: String) : Int = {
if (CountryName == originString){
return 1}
else{
return 0}
}
val geoUDF = udf(geo _)
val newData = countryDF.withColum("isOrignOrNot", geoUDF(col("originString"),col("CountryName"))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.