2016-03-28 3 views
0

Sparkを使用して既存のアプリケーションを再開発することを検討しています。 既存のドメインモデル(現在C#クラス)はRDDとしてリモデリングされ、現在ドメインモデルを変更するロジックはRDDを変換する関数にリファクタリングされます。ドメインクラスをRDDとしてモデル化する

問題は、ドメインクラスをRDDとしてどのようにモデリングするのかです。 最も簡単なアプローチは、Map<String, Any>としてモデル化することです。 次いで、これを(おそらくcase classとして)Scalaでドメイン・クラスを作成し、RDDとしてこれをロードすることであろうsparkContext.parallelize(map).

代替手段を使用して、スパークにRDDとしてロードすることができます。 RDD内のすべての要素(または「行」)は、クラスの1つのインスタンスになります。しかし、これは正しいアプローチかベストプラクティスと考えられていますか?そして、理にかなったアプローチであれば、ScalaクラスをRDDとしてSparkにどのようにロードできますか?

答えて

0

この作品

ありがとう:

ユーザーインスタンスのリストを作成し、そこからRDD

を作成するインスタンス

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

を作成case class

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

を作成

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

スパークの経験を持つ誰もがどのアプローチを持っています

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

に各Userインスタンスを変更し、RDD

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

確認

usersRDD.foreach { println } 

にそれを渡す関数を作成もっとお勧めですか?

関連する問題