spark 把一列数据合并_Spark DataFrame列的合并与拆分
import org.apache.spark.ml.attribute.{Attribute, NumericAttribute}
import org.apache.spark.sql.SparkSession
import org.apache.spark.sql.types.StringType/**
* Created by shirukai on 2018/9/12
* 拆分列*/
objectSplitColTest {
def main(args: Array[String]): Unit={
val spark=SparkSession
.builder()
.appName(this.getClass.getSimpleName)
.master("local")
.getOrCreate()//从内存中创建DataFrame
import spark.implicits._
val df= Seq("Ming,20,15552211521", "hong,19,13287994007", "zhi,21,15552211523")
.toDF("value")
df.show()/**
* +-------------------+
* | value|
* +-------------------+
* |Ming,20,15552211521|
* |hong,19,13287994007|
* | zhi,21,15552211523|
* +-------------------+*/import org.apache.spark.sql.functions._//方法1: 使用内置函数split,然后遍历添加列
val separator = ","lazy val first=df.first()
val numAttrs=first.toString().split(separator).length
val attrs= Array.tabulate(numAttrs)(n => "col_" +n)//按指定分隔符拆分value列,生成splitCols列
var newDF = df.withColumn("splitCols", split($"value", separator))
attrs.zipWithIndex.foreach(x =>{
newDF= newDF.withColumn(x._1, $"splitCols".getItem(x._2))
})
newDF.show()/**
* +-------------------+--------------------+-----+-----+-----------+
* | value| splitCols|col_0|col_1| col_2|
* +-------------------+--------------------+-----+-----+-----------+
* |Ming,20,15552211521|[Ming, 20, 155522...| Ming| 20|15552211521|
* |hong,19,13287994007|[hong, 19, 132879...| hong| 19|13287994007|
* | zhi,21,15552211523|[zhi, 21, 1555221...| zhi| 21|15552211523|
* +-------------------+--------------------+-----+-----+-----------+*/
//方法2:使用udf函数创建多列,然后合并
val attributes: Array[Attribute] ={
val numAttrs=first.toString().split(separator).length//生成attributes
Array.tabulate(numAttrs)(i => NumericAttribute.defaultAttr.withName("value" + "_" +i))
}//创建多列数据
val fieldCols = attributes.zipWithIndex.map(x =>{
val assembleFunc=udf {
str: String=>str.split(separator)(x._2)
}
assembleFunc(df("value").cast(StringType)).as(x._1.name.get, x._1.toMetadata())
})//合并数据
df.select(col("*") +: fieldCols: _*).show()/**
* +-------------------+-------+-------+-----------+
* | value|value_0|value_1| value_2|
* +-------------------+-------+-------+-----------+
* |Ming,20,15552211521| Ming| 20|15552211521|
* |hong,19,13287994007| hong| 19|13287994007|
* | zhi,21,15552211523| zhi| 21|15552211523|
* +-------------------+-------+-------+-----------+*/}
}
spark 把一列数据合并_Spark DataFrame列的合并与拆分相关推荐
- pandas使用iloc函数基于dataframe数据列的索引抽取单列或者多列数据、其中多列索引需要嵌入在列表方括号[]中、或使用:符号形成起始和终止范围索引
pandas使用iloc函数基于dataframe数据列的索引抽取单列或者多列数据.其中多列索引需要嵌入在列表方括号[]中.或使用:符号形成起始和终止范围索引 目录
- python分两列输出_Pandas实现一列数据分隔为两列
分割成一个包含两个元素列表的列 对于一个已知分隔符的简单分割(例如,用破折号分割或用空格分割).str.split() 方法就足够了 . 它在字符串的列(系列)上运行,并返回列表(系列). >& ...
- Excel如何快速将多列数据复制到一列中
今天跟大家分享一下Excel如何快速将多列数据复制到一列中 1.如下图是多列名单表,现在我们想要将这些名单数据转为一列显示. 2.首先我们选择名单数据单元格区域 3.然后点击下图选项(Excel工具箱 ...
- excle中根据一列数据匹配另一列数据
excle中根据一列数据匹配另一列数据 #公式=INDEX(F:F,MATCH(A5,G:G,)) 1公式输入要填补的位置,C5 2根据G列内容,匹配A列内容,找出G列内容的对应的 返回 F列数据 3 ...
- dataframe两个表合并_Spark DataFrame 不是真正的 DataFrame
从这篇文章开始,我们专栏开始一个新的读 paper 系列. 今天要介绍的 paper 是 Towards Scalable Dataframe Systems,目前还是预印本.作者 Devin Pet ...
- c语言讲两个数组合并_两列数据相互去掉重复值后合并
大家好,今日继续讲VBA数组与字典解决方案的第27讲,内容是两列数据中相互去掉重复值之后将数据合并.这讲的内容利用到动态数组,固定数组,数组的合并,数组的转置等等. 还是先看实例,下面的工作表中A列和 ...
- dataframe中将一列数据切分成多列
为什么80%的码农都做不了架构师?>>> 原sheet中数据 目的 将[备注]列切分成[key]列和[value]列 Python sheet['key'] = sheet[' ...
- python dataframe取一列_python - 从pandas DataFrame列标题中获取列表
python - 从pandas DataFrame列标题中获取列表 我想从pandas DataFrame中获取列标题列表. DataFrame将来自用户输入,因此我不知道将会有多少列或将调用它们. ...
- python excel增加一列_(用Python修改excel中一列数据)python新增一列
python怎么从excel中读取数据? ⒈ #import παέτο import xlrd #Ρύθμι διαδρής path='C:\\Users\\jyjh\\Desktop\\data ...
最新文章
- Git 删除已经提交的文件(Delete commits from a branch in Git)
- python两个装饰器执行顺序_python中多个装饰器的执行顺序
- linux内核定时器使用
- 极光推送指定用户推送_干货|SpringBoot集成极光推送完整实现代码(建议收藏)...
- linux目录自动同步,Linux下rsync+inotify实现实时文件自动同步
- 解决Homebrew报错Error: Failure while executing; git clone https://github.com/Homebrew/homebrew-core....
- Carryon的字符串
- 【李宏毅2020 ML/DL】P4 Basic Concept
- python应用学习(五)——requests爬取网页图片
- arcgis-拓扑检查-model
- 基于Amos路径分析的模型修正与调整
- Springboot毕设项目电子竞技赛事管理系统f1v55java+VUE+Mybatis+Maven+Mysql+sprnig)
- 苏州大学 计算机网络,苏州大学计算机网络与通信期末考试卷-20210517192500.docx-原创力文档...
- C#实现jQuery的方法连缀
- 【转】WPF自定义控件与样式(13)-自定义窗体Window 自适应内容大小消息框MessageBox...
- 最全的软件测试面试题(含答案)
- 国产软件不背黑锅,4款强大又实用的电脑软件,用了舍不得卸载
- 什么是陀螺仪的dr算法_陀螺仪与加速传感器数据的融合算法解析
- python中geometry_python arcgis Geometry
- 清除浮动的几种方式,以及各自的优缺点
热门文章
- Jstatd命令 Java Statistics Monitoring Daemon
- VB讲课笔记14:二级VB知识点总结
- 解决Python shell中Delete-Backspace键乱码问题
- MyBatis框架笔记03:MyBatis实现CRUD
- 【BZOJ1912】【codevs1613】巡逻
- 【BZOJ4199】品酒大会,后缀数组+并查集维护
- 2017.9.26 货币兑换 失败总结
- TCP/IP 和 TCP/IP的 三/四次握手
- 数据图表与分析图_史上最全最实用的数据可视化分析图表制作工具汇总
- redid过期策略_Redis数据过期策略详解