在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)列相关推荐

  1. Spark DataFrame 添加自增id

    方法一:利用窗口函数 /*** 设置窗口函数的分区以及排序,因为是全局排序而不是分组排序,所有分区依据为空* 排序规则没有特殊要求也可以随意填写*/val spec = Window.partitio ...

  2. 如何为spark的dataframe添加常量列

    有时候由于数据处理需要,我们会为dataframe添加一个常量列,本文介绍向dataframe添加常量列的方法. 使用typedLit函数 通过函数:org.apache.spark.sql.func ...

  3. spark DataFrame新增一列id列(单调递增,不重复)的几种方法

    1.使用functions里面的monotonically_increasing_id(),生成单调递增,不保证连续,最大64bit,的一列.分区数不变. import org.apache.spar ...

  4. spark dataframe 一列分隔多列,一列分隔多行(scala)

    关于spark dataframe ,这里介绍三种实用中实现可能比较麻烦的操作,首先上原始数据集 mRecord: 一,合并content列,将name相同的content合并到一行,用逗号隔开: m ...

  5. dataframe 如何选中某列的一行_PySpark和SparkSQL基础:如何利用Python编程执行Spark(附代码)

    作者:Pinar Ersoy 翻译:孙韬淳 校对:陈振东 本文约2500字,建议阅读10分钟 本文通过介绍Apache Spark在Python中的应用来讲解如何利用PySpark包执行常用函数来进行 ...

  6. mysql自定义序号_MySQL数据库之在mysql中给查询的结果添加序号列

    本文主要向大家介绍了MySQL数据库之在mysql中给查询的结果添加序号列 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. 一:第一种: select   (@i:=@i+1)  ...

  7. ASP.NET repeater添加序号列的方法

    ASP.NET repeater添加序号列的方法 1.<itemtemplate> <tr><td> <%# Container.ItemIndex + 1% ...

  8. EasyExcel 导出 excel(二)添加序号列,设置excel打印样式,导出即可打印

    该样例实现了: 1.EasyExcel和原生poi实现了添加序号列 2.单Sheet和多Sheet页导出 3.设置好的打印样式,导出即符合打印版式. 1.引入EasyExcel Maven依赖 < ...

  9. mysql怎么给数据加序号_MySQL数据库之在mysql中给查询的结果添加序号列

    本文主要向大家介绍了MySQL数据库之在mysql中给查询的结果添加序号列 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. 一:第一种: select   (@i:=@i+1)  ...

最新文章

  1. 【HTML5CSS3进阶学习02】Header的实现·CSS中的布局
  2. lan8720a自协商启动_紫金矿业2020届校招海外9站全面启动(面向全专业)
  3. mysql数据转存到时序数据库_干货丨如何高速迁移MySQL数据到时序数据库DolphinDB...
  4. Optimal Step Nonrigid ICP Algorithms for surface registration
  5. Linux调优/优化
  6. XBRL 可扩展商业报告语言
  7. 前端复习笔记(一)——HTML
  8. Linux系统如何安装网易云音乐
  9. Latex特殊符号大全(高清)
  10. mac appium环境搭建
  11. 知客CRM成功客户专访----厦门英斯捷
  12. python中系统找不到指定文件怎么办_python 系统找不到指定的文件
  13. Github没有Download Zip(下载zip)的绿色选项是因为所在的是一个子目录
  14. CryEngine5 Shader调试
  15. 各种IT学习视频和资料
  16. 2020-11-20
  17. 清空MySQL单库下所有表数据 || 删除MySQL单库下所有表
  18. WSL / WSL2 问题大全 及 解决方案
  19. Alex 我为自己代言
  20. 主流新产品开发模式介绍:集成产品开发管理

热门文章

  1. gitlab fatal: could not read Username for : Device not configured
  2. C# DataRow转DataTable
  3. sql inject1
  4. 浅析HDMI、DP、雷电接口优缺点
  5. ITM机制-不用串口也能printf
  6. 【leetcode/二分】有效的完全平方数(夹逼二分)
  7. API 接口设计规范
  8. 从函数计算到 Serverless 架构
  9. Redis集群模式源码分析
  10. 10个python接私活的平台,整整10个,总有适合你的,你有技术就有钱