Spark实现HashMap转RDD处理

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版权协议,转载请附上原文出处链接和本声明。