【问题标题】:Modelling a domain class as an RDD将领域类建模为 RDD
【发布时间】:2016-03-28 20:32:09
【问题描述】:

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

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

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

谢谢

【问题讨论】:

    标签: apache-spark


    【解决方案1】:

    这行得通:

    创建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 经验的人有更推荐的方法吗?

    【讨论】:

      猜你喜欢
      • 2012-06-21
      • 1970-01-01
      • 2011-04-19
      • 1970-01-01
      • 2011-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-12
      相关资源
      最近更新 更多