首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将域类建模为RDD

将域类建模为RDD
EN

Stack Overflow用户
提问于 2016-03-28 17:37:47
回答 1查看 142关注 0票数 0

我们正在考虑使用Spark重新开发我们现有的应用程序。我们现有的领域模型(目前是C#类)将被重新建模为RDD,并且当前修改领域模型的逻辑将被重构为转换RDD的功能。

问题是如何最好地将域类建模为RDD。最简单的方法是将其建模为Map<String, Any>。然后可以使用sparkContext.parallelize(map).将其作为RDD加载到Spark中

另一种方法是在Scala中创建一个域类(可能作为case class),并将其加载为RDD。RDD中的每个元素(或“行”)都是该类的一个实例。然而,这是否被认为是正确的方法或最佳实践?而且,如果这是一种有意义的方法,那么如何将Scala类作为RDD加载到Spark中?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2016-03-28 20:26:52

这是可行的:

创建case class

代码语言:javascript
复制
case class User(username:String, age:Int, gender:String)

创建实例

代码语言:javascript
复制
var user1 = User("john", 46, "f")
var user2 = User("paul", 44, "m")
var user3 = User("miriam", 22, "m")

创建用户实例列表,并从中创建RDD

代码语言:javascript
复制
val users = List(user1, user2, user3)
val usersRDD = sc.parallelize(users)

创建用于修改每个User实例的函数

代码语言:javascript
复制
def incrementAge(u:User) = {
     val user = u.copy(age = t.age+1)
     user
}

并将其传递给RDD

代码语言:javascript
复制
val modifiedRDD = usersRDD.map {x => incrementAge(x) }

确认

代码语言:javascript
复制
usersRDD.foreach { println }

有Spark经验的人有更推荐的方法吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36259611

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档