2016-03-28 62 views
0

我們正在考慮使用Spark重新開發現有的應用程序。 我們現有的領域模型(目前C#類)將被改造爲RDD,並且當前修改領域模型的邏輯將被重構爲轉換RDD的函數。將域類建模爲RDD

問題是如何最好地將域類建模爲RDD。 最簡單的方法是將其建模爲Map<String, Any>。 這可以接着使用sparkContext.parallelize(map).

另一種方法是創建Scala中的一個域類(可能作爲case class)並加載這個爲RDD被裝載作爲RDD成火花。 RDD中的每個元素(或'行')將成爲該類的一個實例。但是,這被認爲是一種正確的做法或最佳做法?而且,如果這是一種有意義的方法,Scala類如何作爲RDD加載到Spark?

感謝

回答

0

這工作:

創建case class

case class User(username:String, age:Int, gender:String) 

創建實例

var user1 = User("john", 46, "f") 
var user2 = User("paul", 44, "m") 
var user3 = User("miriam", 22, "m") 

創建用戶實例的列表,並從創建RDD

val users = List(user1, user2, user3) 
val usersRDD = sc.parallelize(users) 

創建函數修改每個User實例

def incrementAge(u:User) = { 
    val user = u.copy(age = t.age+1) 
    user 
} 

,並把它傳遞給RDD

val modifiedRDD = usersRDD.map {x => incrementAge(x) } 

確認

usersRDD.foreach { println } 

有誰星火的經驗,有一種方法,其更值得推薦?

相關問題