用spark加载文本数据得到RDD[Array]如何将这个结构转化为RDD[表名,Map[列名,列值]]
用spark加载文本数据得到RDD[Array]如何将这个结构转化为RDD[表名,Map[列名,列值]]
你那数据是一个表的,还是多个表的?数据里有表名吗?
那你用map转成pairRDD key为你定义的表名,做切分转成map结构当value不就行了
你map之后返回元组 (表名,Map<列名,值>) 就会变成RDD[表名,Map[列名,值]],返回什么自己定不是非得Array
@yan 这个代码应该是你要的意思吧?
val numbers = List(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
val parallelize: RDD[Int] = sc.parallelize(numbers, 1)
import scala.collection.mutable.HashMap
val tableRdd: RDD[(String, HashMap[String, AnyVal])] = parallelize.map(f => {
val map = new HashMap[String, AnyVal]()
("表名", map += "列名"-> f)
})
val tuples: Array[(String, mutable.HashMap[String, AnyVal])] = tableRdd.collect()
for (a:(String, mutable.HashMap[String, AnyVal]) <- tuples){
println("表名:" + a._1 + " 数据:" + a._2)
}
结果