Hive 如何将带有子项的JavaBean转换为RDD[Row]

Hive 如何将带有子项的JavaBean转换为RDD[Row],hive,apache-spark-sql,Hive,Apache Spark Sql,我有一个RDD,它由一些Java bean组成。每个bean都有一个包含一些子项的哈希集,比如一个由一些项组成的顺序。我想将这个Rdd[Order]转换为Rdd[Row],并将订单和项目插入到配置单元内的订单表和项目表中。以下是我的代码: val orders = new ListBuffer[Order]() val order = new Order(...) order.itemSet = scala.collection.mutable.Set.empty[Item] val item1

我有一个RDD,它由一些Java bean组成。每个bean都有一个包含一些子项的哈希集,比如一个由一些项组成的顺序。我想将这个Rdd[Order]转换为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,...)
      })
    })

问题是“orderRows”是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)
“order.item.map(item=>{”应该是“order.itemSet.map(item=>{)”。很抱歉这个错误。