查找我做的火花項目和需要就如何解決的最佳方式如下問題:火花從一個小文件
我有一個數據幀(說MainDF),其中有上百萬的記錄。格式是這樣的(name:String,value:Int)。下面的內容例如:
Davi,130
Joel,20
Emma,500
我還有一個小文件,與4號線的記錄,像這樣(的className:字符串,minValue(最小值):詮釋,包括maxValue:智力) 現在我需要創建通過查找類文件名基於最大和最小,爲低於上述記錄輸出之間的值:
First,500,9999999
Second,100,499
Third,0,99
Unknown,-99999,0
我需要根據從值範圍查找在MainDF每個值這個小文件,並添加類名small File.Example:
Davi,130,Second
Joel,20,Third
Emma,500,First
這是我寫的代碼:
//Main Data read, millions of records
val MainData = sc.textFile("/mainfile.csv")
case class MainType(Name:String,value:Int)
val MainDF = MainData .map(line => line.split(",")).map(e =>MainType(e(0),e(1).toInt))).toDF
MainDF.registerTempTable("MainTable")
val refData = sc.broadast(sc.textFile("/refdata.csv"))
case class refDataType (className:String,minValue:Int,maxValue:Int)
//ref data, just 4 records
val refRDD = refData.map(line=> line.split(",")).map(e => refDataType (e(0) , e(1).toInt, e(2).toInt))
我想我要在這裏寫一個UDF,但我不知道如何在UDF使用一個數據幀,或有任何方式做到這一點spark scala
如果這4個條件總是相同的話,你可以編寫一個if-else if if-else UDF,而不是從該文件創建一個數據框 – philantrovert
@philantrovert感謝您的關注,用戶可以更新它,因此它可能會有所不同。 – user3124284
除了在這裏使用UDF之外,還有其他的方法嗎? – user3124284