[3].Spark 学习笔记 使用java ---explode
来源:互联网 发布:sketch中文版软件 编辑:程序博客网 时间:2024/06/02 01:58
这篇文章将记录如何使用spark DataFrame将列数据展开,这里使用的是explode方法
将对List数据和Map分别给出展开的例子:
在stackoverflow 中的问题是这样的:
https://stackoverflow.com/questions/37391241/how-to-explode-columns/37392793#37392793
加入我们有这种数据:
我们希望得到这种格式的:
那么使用java如何操作呢? 一种是使用RDD啊什么的一个一个的转,但是强大的spark用提供了一个强大的explode方法
首先看下explode官方给的文档吧~~
可以知道 explode方法可以从规定的Array或者Map中使用每一个元素创建一列
废话不多说,直接上代码~~
df = df.withColumn("entityPair", functions.explode(functions.col("entityList")));
这里explode中传入的是需要进行展开的列名,withColun中的第一个参数是展开后的新列名。
其中entityList必须是一个List。例如上面给的数据例子,在爱好哪一行,数据类型应该是这样的
List<String> : {"羽毛球","篮球"}
文档中还说了可以将map数据展开,那么如何进行呢?
假设我们有这样一个map
我们需要将map中所有的key和value展开,所有的key为一列,所有的value为一列
得到如下结构
下面给出java 方法
df = df.select(functions.explode(functions.col("data"))).toDF("key", "value");
可以看到,这里和List有一个不同的地方时需要在explode后接一个toDF操作,是因为map进行展开操作后自然会得到两列,我们需要将其转化为DataFrame格式的两列,列名可以自己指定。
如果您还有好的方法,希望可以留言告诉我~~
阅读全文
0 0
- [3].Spark 学习笔记 使用java ---explode
- [2].Spark 学习笔记 使用java ---PageRank
- PHP学习笔记(九):substr、explode
- spark学习笔记:使用maven编译spark
- Spark使用explode展开嵌套的JSON数据
- [1].Spark 学习笔记 使用java ---word count
- spark in eclipse---Spark学习笔记3
- Spark学习使用笔记 - Scala篇(3)- 对象
- spark学习笔记:使用API初始化SparkContext
- explode()函数使用
- 使用 explode 分割字符串
- 第10课:底实战详解使用Java开发Spark程序学习笔记
- 第10课:底实战详解使用Java开发Spark程序学习笔记(二)
- spark学习笔记:Spark Streaming
- Spark学习笔记:初识Spark
- Spark学习笔记--Spark基础知识
- spark学习笔记:初识spark
- spark学习笔记3 spark应用程序之间的调度
- 危桥僵尸问题的制度思考
- 安卓微信内,window.location.reload()不刷新问题
- MySQL5.7更改密码时出现ERROR 1054 (42S22): Unknown column 'password' in 'field list'
- shell脚本学习 之文件测试运算符
- PG重建索引
- [3].Spark 学习笔记 使用java ---explode
- Unity 、Eclipse Android平台、接入支付宝SDK
- redis(13)——哨兵原理
- Elasticsearch学习笔记(一)Elasticsearch安装
- Erlang函数递归调用模式
- 说说如何实现高可用的网站架构
- 模式开始-第二天
- angular ui-router,最适合的angular1的路由开发
- 01-什么是栅格数据