scala spark dataframe添加序号(id)列
在spark的开发中,经常会出现需要为dataframe添加id列的地方,特别对于一些需要存到关系型数据库中的结果,话不多说,下面直接上代码。
1、初始化:
val sparks = SparkSession.builder.master("local[4]").appName("test1").getOrCreate()val sc = sparks.sparkContext;
2、从mysql中取一组不带id的数创建dataframe
val mRecord = sparks.read.format("jdbc").option("url", "jdbc:mysql://127.0.0.1:3306/spark?user=root&password=root").option("dbtable", "(select water from correlation limit 10000) as record") //数据.option("driver","com.mysql.jdbc.Driver").load();mRecord.show(false);
结果如下:
3、将dataframe转换为rdd
val mRdd = mRecord.rdd;mRdd.collect().foreach{println};
结果如下:
3、为rdd添加需要列,主要使用zipWithIndex()
val newRdd = mRdd.map{x => x.toString().substring(1,x.toString().length - 1)}.zipWithIndex();newRdd.collect().foreach{println};
结果如下:
4、rdd转回dataframe,注意newRdd中的内容不是string,是tuple
val rowRdd = newRdd.map(a => Row(a._1.toInt,a._2.toInt));val schema = StructType(Array(StructField("water",IntegerType,true),StructField("id",IntegerType,true)));val resDf = sparks.createDataFrame(rowRdd,schema);resDf.show(false);
结果如下:
scala spark dataframe添加序号(id)列相关推荐
- Spark DataFrame 添加自增id
方法一:利用窗口函数 /*** 设置窗口函数的分区以及排序,因为是全局排序而不是分组排序,所有分区依据为空* 排序规则没有特殊要求也可以随意填写*/val spec = Window.partitio ...
- 如何为spark的dataframe添加常量列
有时候由于数据处理需要,我们会为dataframe添加一个常量列,本文介绍向dataframe添加常量列的方法. 使用typedLit函数 通过函数:org.apache.spark.sql.func ...
- spark DataFrame新增一列id列(单调递增,不重复)的几种方法
1.使用functions里面的monotonically_increasing_id(),生成单调递增,不保证连续,最大64bit,的一列.分区数不变. import org.apache.spar ...
- spark dataframe 一列分隔多列,一列分隔多行(scala)
关于spark dataframe ,这里介绍三种实用中实现可能比较麻烦的操作,首先上原始数据集 mRecord: 一,合并content列,将name相同的content合并到一行,用逗号隔开: m ...
- dataframe 如何选中某列的一行_PySpark和SparkSQL基础:如何利用Python编程执行Spark(附代码)
作者:Pinar Ersoy 翻译:孙韬淳 校对:陈振东 本文约2500字,建议阅读10分钟 本文通过介绍Apache Spark在Python中的应用来讲解如何利用PySpark包执行常用函数来进行 ...
- mysql自定义序号_MySQL数据库之在mysql中给查询的结果添加序号列
本文主要向大家介绍了MySQL数据库之在mysql中给查询的结果添加序号列 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. 一:第一种: select (@i:=@i+1) ...
- ASP.NET repeater添加序号列的方法
ASP.NET repeater添加序号列的方法 1.<itemtemplate> <tr><td> <%# Container.ItemIndex + 1% ...
- EasyExcel 导出 excel(二)添加序号列,设置excel打印样式,导出即可打印
该样例实现了: 1.EasyExcel和原生poi实现了添加序号列 2.单Sheet和多Sheet页导出 3.设置好的打印样式,导出即符合打印版式. 1.引入EasyExcel Maven依赖 < ...
- mysql怎么给数据加序号_MySQL数据库之在mysql中给查询的结果添加序号列
本文主要向大家介绍了MySQL数据库之在mysql中给查询的结果添加序号列 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. 一:第一种: select (@i:=@i+1) ...
最新文章
- 【HTML5CSS3进阶学习02】Header的实现·CSS中的布局
- lan8720a自协商启动_紫金矿业2020届校招海外9站全面启动(面向全专业)
- mysql数据转存到时序数据库_干货丨如何高速迁移MySQL数据到时序数据库DolphinDB...
- Optimal Step Nonrigid ICP Algorithms for surface registration
- Linux调优/优化
- XBRL 可扩展商业报告语言
- 前端复习笔记(一)——HTML
- Linux系统如何安装网易云音乐
- Latex特殊符号大全(高清)
- mac appium环境搭建
- 知客CRM成功客户专访----厦门英斯捷
- python中系统找不到指定文件怎么办_python 系统找不到指定的文件
- Github没有Download Zip(下载zip)的绿色选项是因为所在的是一个子目录
- CryEngine5 Shader调试
- 各种IT学习视频和资料
- 2020-11-20
- 清空MySQL单库下所有表数据 || 删除MySQL单库下所有表
- WSL / WSL2 问题大全 及 解决方案
- Alex 我为自己代言
- 主流新产品开发模式介绍:集成产品开发管理