【Spark】HashMap转RDD

1、读取本地文件,转换成map

Scala 复制代码
val path = "文件路径"
val source = Source.fromFile(path).getLines().toList.mkString("").replaceAll(" ","")

val key = JSON.parseObject(source).get("key").toString
val columns = JSON.parseObject(source).get("value").toString

val map = new util.HashMap[String, String]()
map.put("RK", getValue(key))

JSON.parseObject(columns.toString).keySet().asScala.foreach(elem => {
    val valueJson = JSON.parseObject(columns.toString).get(elem).toString
    map.put(elem, getValue(valueJson))
})



def getValue(str: String): String = {

    val value = str.toString.replace("[","").replace("]","")
    JSON.parseObject(value).get("value").toString
}

2、将map转变成rdd

Scala 复制代码
val schema = StructType(map.asScala.toSeq.map {case(k,v) =>
    StruchField(k, StringType, nullable = true)
})

val row = Row.fromSeq(map.values().asScala.toSeq)

val rowRDD = spark.sparkContext.parallelize(Seq(row))

val df = spark.createDataFrame(rowRDD, schema)

备注:数据格式

Scala 复制代码
{
    "key":[
        {
            "name":"RK",
            "type":"String",
            "value":"1234567890"
        }
    ],
    "columns":{
        "column_name1":[
            "name":"column_name1",
            "type":"String",
            "value":"111"   
        ],
        "column_name2":[
            "name":"column_name2",
            "type":"String",
            "value":"222"   
        ],
        "column_name3":[
            "name":"column_name3",
            "type":"String",
            "value":"333"   
        ]
    }
}
相关推荐
怕浪猫8 小时前
Electron 开发实战(十五):实战项目|从零搭建桌面即时通讯(IM)应用
前端·javascript·electron
不吃鱼的羊8 小时前
DaVinci配置NVM模块
前端·javascript·网络
一坨阿亮8 小时前
使用e-tree开发树形穿梭框
javascript·vue.js·elementui
lang201509288 小时前
Java SAX 流式解析全解:从原理到 EasyExcel 实战
java·前端·javascript
VidDown8 小时前
视频协议传输全解析:从 HTTP/HTTPS 到 HLS/DASH 的完整旅程
javascript·网络·http·https·编辑器·音视频·视频编解码
yuanyxh17 小时前
Mac 软件推荐
前端·javascript·程序员
万少17 小时前
AtomCode开发微信小程序《谁去呀》 全流程
前端·javascript·后端
学Linux的语莫20 小时前
Vue 3 入门教程
前端·javascript·vue.js
怕浪猫20 小时前
第一章、Chrome DevTools Protocol (CDP) 详解
前端·javascript·chrome
Yeats_Liao1 天前
Feed流系统设计(三):数据模型与存储设计,从表结构到Redis收件箱
java·javascript·redis