如何将带子项目的Java Bean转换为RDD [ROW]



我有一个由一些Java bean组成的RDD。每个豆子都有一个标签,其中包含一些子项目,例如一个由某些项目组成的订单。我想将此RDD [订单]转换为RDD [ROW],然后将订单和项目插入蜂箱内的订单表和项目表。以下是我的代码:

val orders = new ListBuffer[Order]()
val order = new Order(...)
order.itemSet = scala.collection.mutable.Set.empty[Item]
val item1 = new Item(...)
val item2 = new Item(...)
order.itemSet.add(item1)
order.itemSet.add(item2)
orders.add(order)
val orderRDD = sc.parallize(orders.toSeq)
val orderRows = orderRDD.map(order => {
    Row(order_field1, order_field2, ...)
  })
//hiveContext.insert(orderRows)
val itemRows = orderRDD.map(order => {
      order.item.map(item => {
        Row(order_item_field1, order_item_field2,...)
      })
    })

问题在于"订购"是rdd [seq [itemrow]],但我想要一个rdd [itemrow]。有人知道该怎么做吗?谢谢!

可以这样写:

val itemRows = orderRDD.map(order => {
  order.itemSet.map(item => {
    Row(order_item_field1, order_item_field2,...)
  })
}).fold(Set.empty[Row])((set1, set2) => set1 ++= set2).toSeq
val itemRDD = sc.parallize(itemRows)

相关内容

  • 没有找到相关文章

最新更新