【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"   
        ]
    }
}
相关推荐
jstopo网站28 分钟前
水厂水泵工作流程图canvas动画
前端·javascript
张元清30 分钟前
5 分钟用 Vite SSR 搭建一个全栈 React 应用
前端·javascript·面试
布局呆星1 小时前
Vue3 | 组件化开发---组件插槽与通信
前端·javascript·vue.js
你的不安2 小时前
GEE中getInfo()
javascript·云计算·gee
大阳光男孩2 小时前
Uniapp+Vue3树形选择器
前端·javascript·uni-app
前端 贾公子2 小时前
uniapp中@input修改input内容不生效 | 过滤赋值无效 | 连续非法字符不更新的问题
开发语言·前端·javascript
533_2 小时前
[vxe-table] 表头:点击出现输入框
android·java·javascript
写不来代码的草莓熊2 小时前
el-date-picker ,自定义输入数字自动转换显示yyyy-mm-dd HH:mm:ss格式 【仅双日历 datetimerange专用】
开发语言·前端·javascript
Ava的硅谷新视界2 小时前
TypeScript 中用判别联合类型替代 instanceof 检查
前端·javascript·typescript
comerzhang6553 小时前
16÷4 陷阱:一行代码让 SharedArrayBuffer 数据全部错位
javascript