【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"   
        ]
    }
}
相关推荐
花花鱼30 分钟前
vue3 axios ant-design-vue cdn的方式使用
前端·javascript·vue.js
架构师ZYL1 小时前
node.js+Koa框架+MySQL实现注册登录
前端·javascript·数据库·mysql·node.js
gxhlh2 小时前
React Native防止重复点击
javascript·react native·react.js
一只小白菜~3 小时前
实现实时Web应用,使用AJAX轮询、WebSocket、还是SSE呢??
前端·javascript·websocket·sse·ajax轮询
jingling5553 小时前
后端开发刷题 | 数字字符串转化成IP地址
java·开发语言·javascript·算法
尸僵打怪兽5 小时前
后台数据管理系统 - 项目架构设计-Vue3+axios+Element-plus(0917)
开发语言·javascript·vue.js·elementui
E___V___E6 小时前
vue part 11
前端·javascript·vue.js
一个什么都学的初学者6 小时前
c语言中的常量定义(补充)
c语言·开发语言·javascript
Narnat6 小时前
SX_c语言替换文件中的字符串_22
c语言·前端·javascript
武子康6 小时前
大数据-132 - Flink SQL 基本介绍 与 HelloWorld案例
java·大数据·数据库·sql·flink·spark·scala