{"name":"Michael", "age":25,"myScore":[{"score1":19,"score2":23},{"score1":58,"score2":50}]}
{"name":"Andy", "age":30,"myScore":[{"score1":29,"score2":33},{"score1":38,"score2":52},{"score1":88,"score2":71}]}
{"name":"Justin", "age":19,"myScore":[{"score1":39,"score2":43},{"score1":28,"score2":53}]}
{"name":"Michael", "age":25,"myScore":[{"score1":19,"score2":23},{"score1":58,"score2":50}]}
object explodeTest {
def main(args: Array[String]): Unit = { val sparks = SparkSession.builder.master("local[4]").appName("test1").getOrCreate
val sc = sparks.sparkContext val df= sparks.read.json("file:///C:\\Users\\imp\\Desktop\\bo-kong\\data\\josn") df.show()
//spark 读取json 数据
/**+---+--------------------+-------+
|age| myScore| name|
+---+--------------------+-------+
| 25| [[19,23], [58,50]]|Michael|
| 30|[[29,33], [38,52]...| Andy|
| 19| [[39,43], [28,53]]| Justin|
| 25| [[19,23], [58,50]]|Michael|
| 30|[[29,33], [38,52]...| Andy|
| 19| [[39,43], [28,53]]| Justin|
| 25| [[19,23], [58,50]]|Michael|
| 30|[[29,33], [38,52]...| Andy|
| 19| [[39,43], [28,53]]| Justin|
+---+--------------------+-------+
*
*
*
*/ //使用spark.sql.functions._ explode函数进行压平操作 行转列
import org.apache.spark.sql.functions._
val dfScore = df.select(df("name"),explode(df("myScore"))).toDF("name","myScore")
val dfMyScore = dfScore.select("name","myScore.score1", "myScore.score2")
dfScore.show()
df.createOrReplaceTempView("df")
//u.answer, ''
/**
*
*
*
* +-------+-------+
* | name|myScore|
* +-------+-------+
* |Michael|[19,23]|
* |Michael|[58,50]|
* | Andy|[29,33]|
* | Andy|[38,52]|
* | Andy|[88,71]|
* | Justin|[39,43]|
* | Justin|[28,53]|
* |Michael|[19,23]|
* |Michael|[58,50]|
* | Andy|[29,33]|
* | Andy|[38,52]|
* | Andy|[88,71]|
* | Justin|[39,43]|
* | Justin|[28,53]|
* |Michael|[19,23]|
* |Michael|[58,50]|
* | Andy|[29,33]|
* | Andy|[38,52]|
* | Andy|[88,71]|
* | Justin|[39,43]|
* +-------+-------+
* only showing top 20 rows
*/ }
}

 
数据
aa
bb
cc
dd
ee
ff

dataframe增加index主键列

 case  class Log(map:scala.collection.mutable.Map[String,String],ID: Long)
import sparks.implicits._
val data2 = sc.parallelize(Seq((Map("uuid"->"sxexx","ip"->"192.168")),Map("uuid"->"man","ip"->"192.168.10.1"))).zipWithIndex()
.map(i=>(i._1,i._2))
data2.collect().foreach(print(_))
/**
* 先创造一个Rdd[map] 使用zipWithIndex 看看效果 第二个元素为id主键
*
*
* (Map(uuid -> sxexx, ip -> 192.168),0)
* (Map(uuid -> man, ip -> 192.168.10.1),1)
*/ val data= sc.textFile("file:///C:\\Users\\imp\\Desktop\\bo-kong\\data\\data")
.zipWithIndex().toDF("id","value")
data.show() /**
* 使用上面的数据的得出结果
* +---+-----+
* | id|value|
* +---+-----+
* | aa| 0|
* | bb| 1|
* | cc| 2|
* | dd| 3|
* | ee| 4|
* | ff| 5|
* +---+-----+
*/

dataframe的进行json数据的压平、增加一列的id自增列的更多相关文章

  1. 使用jQuery解析JSON数据

    我们先以解析上例中的comments对象的JSON数据为例,然后再小结jQuery中解析JSON数据的方法. 上例中得到的JSON数据如下,是一个嵌套JSON: {"comments&quo ...

  2. 使用jQuery解析JSON数据(由ajax发送请求到php文件处理数据返回json数据,然后解析json写入html中呈现)

    在上一篇的Struts2之ajax初析中,我们得到了comments对象的JSON数据,在本篇中,我们将使用jQuery进行数据解析. 我们先以解析上例中的comments对象的JSON数据为例,然后 ...

  3. ios开发值json数据文件的存取

    将Json存进本地文件夹   NSArray *paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainM ...

  4. ios开发 json数据文件的存取

    将Json存进本地文件夹     NSArray *paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomai ...

  5. JQuery- 解析JSON数据

    我们先以解析上例中的comments对象的JSON数据为例,然后再小结jQuery中解析JSON数据的方法.上例中得到的JSON数据如下,是一个嵌套JSON: {,,"nickname&qu ...

  6. 菜鸟笔记:node.js+mysql中将JSON数据构建为树(递归制作树状菜单数据接口)

    初学Web端开发,今天是第一次将所学做随笔记录,肯定存在多处欠妥,望大家海涵:若有不足,望大家批评指正. 进实验室后分配到的第一个项目,需要制作一个不确定层级树形菜单的数据接口,对于从来没实战编过程的 ...

  7. Delphi中使用ISuperObject解析Json数据

    Java.Php等语言中都有成熟的框架来解析Json数据,可以让我们使用很少的代码就把格式化好的json数据转换成程序可识别的对象或者属性,同时delphi中也有这样的组件来实现此功能,即Isuper ...

  8. AngularJS学习笔记(3)——通过Ajax获取JSON数据

    通过Ajax获取JSON数据 以我之前写的与用户交互的动态清单列表为例,使用JSON前todo.html代码如下: <!DOCTYPE html> <html ng-app=&quo ...

  9. 深入分析jquery解析json数据

    我们先以解析上例中的comments对象的JSON数据为例,然后再小结jQuery中解析JSON数据的方法. JSON数据如下,是一个嵌套JSON: {"comments":[{& ...

随机推荐

  1. react_app 项目开发 (6)_后台服务器端-node

    后台服务器端 负责处理前台应用提交的请求,并向前台返回 json 数据 前台应用 负责 展现数据与用户交互 发 ajax 请求与后台应用交互 yarn add axios /src/api/ajax. ...

  2. [LeetCode] Bricks Falling When Hit 碰撞时砖头掉落

    We have a grid of 1s and 0s; the 1s in a cell represent bricks.  A brick will not drop if and only i ...

  3. AJAX-快速上手(四个步骤)

    ## 1, ajax ajax是使用js进行在不重新加载页面的情况下,使得页面局部刷新.而传统的页面加载即需要,重新加载整个页面.它的加载是异步进行的,即在加载的同时,页面的其他部分可以正常使用,不会 ...

  4. 上传及更新代码到github(以及如何在vscode上提交自己的代码)

    上传本地代码 第一步:去github上创建自己的Repository,创建页面如下图所示: 红框为新建的仓库的https地址 第二步: echo "# Test" >> ...

  5. ionic3 添加多个自定义组件

    往往我们创建自定义组件一般都不止只会创建一个自定义组件,创建多个方式如下. 1.创建自定义组件 ionic g component select-car-no ionic g component ae ...

  6. mysql主从服务搭建

    一.安装mysql 检测当前centos是否安装了mysql:yum list installed | grep mysql yum list installed | grep mariadb    ...

  7. 微信小程序样式旋转

    相关文档:http://www.w3school.com.cn/cssref/pr_transform.asp index.wxss文件 注意:如果是web前端,要注意浏览器的兼容性 .x1{ wid ...

  8. Linux服务器在SSH客户端如何实现免密登录

    一.SSH客户端Setting 配置 key ,  创建生成公钥导出文件. 二.服务器 master 上生成密钥 通过执行命令 ssh-keygen -t rsa 来生成我们需要的密钥. ssh-ke ...

  9. 第一次接触Android Studio

    生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4390905.html

  10. 【Solution】MySQL 5.8 this is incompatible with sql_mode=only_full_group_by

    [42000][1055] Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated colu ...