Spark实现HashMap转RDD处理
使用Spark可以轻松实现分布式的查询处理,然而在做数据处理时得到的原始数据并非RDD结构而是HashMap时,就需要将其转换成RDD对象。
本文就如何将二级结构的HashMap转RDD,进行DEMO代码示例说明:
其中HashMap结构定义如下:
val map:HashMap[String,HashMap[String,Object]] = new HashMap[String,HashMap[String,Object]]
以下是HashMap转RDD的处理代码,
private def hashMap2RDD() :RDD[Row] = {
var demoSeq:Seq[Row] = Seq.empty
map.keySet().toArray.foreach(mainKey => {
val mainKeyStr = mainKey.toString
val valueMap = map.get(mainKeyStr)
valueMap.keySet().toArray.foreach(key => {
val value = valueMap.get(key.toString).toString.toInt
demoSeq ++= Seq(Row.fromSeq(Seq(mainKeyStr, key.toString, value)))
})
})
spark.sparkContext.parallelize(demoSeq)
}
之后对得到的RDD进行处理即可实现并行化处理,也可以将其持久化写入HDFS。
版权声明:本文为linhanyichen原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。