如何将带有子项的javabean转换为rdd[row]

dfuffjeb  于 2021-06-26  发布在  Hive
关注(0)|答案(1)|浏览(357)

我有一个rdd,它由一些javabean组成。每个bean都有一个包含一些子项的哈希集,比如一个由一些项组成的顺序。我想将这个rdd[order]转换为rdd[row],并将order和items插入到配置单元中的order表和item表中。以下是我的代码:

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,...)
      })
    })

问题是“orderrows”是rdd[seq[itemrow]],但我想要一个rdd[itemrow]。有人知道怎么做吗?谢谢!

f4t66c6m

f4t66c6m1#

有没有可能这样写:

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)

相关问题