我们正在考虑使用Spark重新开发我们现有的应用程序。我们现有的领域模型(目前是C#类)将被重新建模为RDD,并且当前修改领域模型的逻辑将被重构为转换RDD的功能。
问题是如何最好地将域类建模为RDD。最简单的方法是将其建模为Map<String, Any>。然后可以使用sparkContext.parallelize(map).将其作为RDD加载到Spark中
另一种方法是在Scala中创建一个域类(可能作为case class),并将其加载为RDD。RDD中的每个元素(或“行”)都是该类的一个实例。然而,这是否被认为是正确的方法或最佳实践?而且,如果这是一种有意义的方法,那么如何将Scala类作为RDD加载到Spark中?
谢谢
发布于 2016-03-28 20:26:52
这是可行的:
创建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 }有Spark经验的人有更推荐的方法吗?
https://stackoverflow.com/questions/36259611
复制相似问题