から見上げます。形式は次のとおりです(name:String、value:Int)。下記の内容例:スパークは、私は、スパークプロジェクトをやっているとニーズが最善の方法で、以下の問題を解決する方法について助言小さなファイル
Davi,130
Joel,20
Emma,500
私はこのようなレコードの4行で別の小さなファイル、(クラス名:文字列、のminValue:INT、maxValueの:INT)持っている今、私はクラスを検索してファイルを作成 が必要名前最小値と最大値、以下上記のレコードの出力間の値に基づいて:
First,500,9999999
Second,100,499
Third,0,99
Unknown,-99999,0
私はMainDF内の各値のため、この小さなファイルを検索し、からの値の範囲に基づいて、クラス名を追加する必要があります小さいファイル。例:
Davi,130,Second
Joel,20,Third
Emma,500,First
これは私が書いたコードです:私はここにUDFを書くために持っていると思う
//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でデータフレームを使用する方法を知らない、またはでこれを行うにはどのような方法がありますspark scala
これらの4つの条件が常に同じになる場合は、そのファイルからデータフレームを作成する代わりにifelse ifelse UDFを書くことができます。 – philantrovert
@philantrovert見ていただきありがとうございます。 – user3124284
ここにUDFを使用する以外に、他の方法はありますか? – user3124284