Hive 如何将带有子项的JavaBean转换为RDD[Row]
我有一个RDD,它由一些Java bean组成。每个bean都有一个包含一些子项的哈希集,比如一个由一些项组成的顺序。我想将这个Rdd[Order]转换为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
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=>{)”。很抱歉这个错误。