当前位置: 首页 > news >正文

Spark与SQL之间NB的转换_withClumn,split及SubString

        业务中有这样一个场景,我想实现的是将dataframe表table1中的字段b1与c1的内容使用下划线_连接起来列的名字为d1,比如比如学习_1,睡觉_2,吃饭_3,这是我的第一个需求;随后我想保留的是dataframe表table1中的字段d1中的数据比如学习_1,睡觉_2,吃饭_3,中的数据中_前后的数据分别作为两列e1,f1,该怎么写这个spark代码,我的想法是使用withclumn函数及split函数.

        sql来写的话就是使用subString函数来进行_匹配,比如说

sql代码

SELECT SUBSTRING_INDEX(a1, '_', 1) AS a2
FROM table1;

Spark代码

创建一个DataFrame,名为table1,将b1c1字段的内容使用下划线连接起来,并将新的列命名为d1

import org.apache.spark.sql.functions._  val table1 = Seq(  ("学习", "1"),  ("睡觉", "2"),  ("吃饭", "3")  
).toDF("b1", "c1")  val table1_d1 = table1.withColumn("d1", concat($"b1", "_", $"c1"))

使用split函数将d1字段中的数据拆分为两列e1f1

val table1_d1_split = table1_d1.withColumn("e1", split(col("d1"), "_")(0))  .withColumn("f1", split(col("d1"), "_")(1))table1_d1_split.show()

table1_d1_split DataFrame将包含新的列e1f1,分别包含下划线前后的数据

+------+------+------+------+------+  
|   b1 |   c1 |   d1 |   e1 |   f1 |  
+------+------+------+------+------+  
| 学习 |   1  | 学习_1 | 学习 |   1  |  
| 睡觉 |   2  | 睡觉_2 | 睡觉 |   2  |  
| 吃饭 |   3  | 吃饭_3 | 吃饭 |   3  | 

sql的就是不断地截取

http://www.lryc.cn/news/232595.html

相关文章:

  • 修改服务器端Apache默认根目录
  • 网络安全(大厂面试真题集)
  • 系列五、JVM的内存结构【PC寄存器】
  • ClickHouse UDF 运行速度慢问题
  • python科研绘图:面积图
  • SQL基础理论篇(六):多表的连接方式
  • 七、Nacos和Eureka的区别
  • Web前端—小兔鲜儿电商网站底部设计及网站中间过渡部分设计
  • 树莓派通过网线连接电脑(校园网也能连接),实现SSH连接
  • asp.net core EF Sqlserver
  • sqlserver 删除master数据库特定前缀开头的所有表的sql语句
  • 【计算机网络】P2 性能指标
  • SDL音视频渲染
  • 2311rust到27版本更新
  • 网络运维Day18
  • leetcode刷题日志-13整数转罗马数字
  • docker 部署mysql主从复制
  • C++打怪升级(十一)- STL之list
  • Python编程陷阱(七)
  • Python如何调用ixchariot进行吞吐量测试
  • 51单片机应用从零开始(五)·加减乘除运算
  • Meta降本增效大招之:弃用产品
  • Adobe Illustrator——原创设计的宝藏软件
  • LEEDCODE 220 存在重复元素3
  • 从内网到公网:使用Axure RP和内网穿透技术发布静态web页面的完整指南
  • 第三天课程 RabbitMQ
  • Ubuntu18.04编译OpenCV时遇到无法下载ADE的问题
  • 基于JavaWeb+SSM+社区居家养老服务平台—颐养者端微信小程序系统的设计和实现
  • 算法实战:亲自写红黑树之五 删除erase的平衡
  • 春秋云境靶场CVE-2021-41402漏洞复现(任意代码执行漏洞)