专栏首页数据挖掘dataframe行变换为列

dataframe行变换为列

新建一个 dataFrame

val conf = new SparkConf().setAppName("TTyb").setMaster("local")
val sc = new SparkContext(conf)
val spark: SQLContext = new SQLContext(sc)
import org.apache.spark.sql.functions.explode
import org.apache.spark.sql.functions.split
import spark.implicits._
val dataFrame = spark.createDataFrame(Seq(
  (1, "example1", "a|b|c"),
  (2, "example2", "d|e")
)).toDF("id", "name", "content")

需要将 content 的内容按照 | 分割,得到如下效果:

+---+--------+-------+
| id|    name|content|
+---+--------+-------+
|  1|example1|      a|
|  1|example1|      b|
|  1|example1|      c|
|  2|example2|      d|
|  2|example2|      e|
+---+--------+-------+

目前有两种方式实现。

方式一

使用 import org.apache.spark.sql.functions 里面的函数,具体的方式可以看 functions

import org.apache.spark.sql.functions.{explode,split}
import spark.implicits._
dataFrame.withColumn("content", explode(split($"content", "[|]"))).show

方式二

使用 udf ,具体的方式可以看 spark使用udf给dataFrame新增列

import org.apache.spark.sql.functions.explode
val stringtoArray =org.apache.spark.sql.functions.udf((content : String) => {content.split('|')})
dataFrame.withColumn("content", explode(stringtoArray(dataFrame("content")))).show

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Spark No FileSystem for scheme file 解决方法

    这里的 Local repository 就是项目保存库的位置。在这里面依次打开文件位置:

    机器学习和大数据挖掘
  • hive新建分区表

    机器学习和大数据挖掘
  • DataFrameNaFunctions无fill方法

    当我使用 spark2.1 ,为了填补 dataframe 里面的 null 值转换为 0 ,代码如下所示:

    机器学习和大数据挖掘
  • UI设计师高效协作的秘诀 | 云端库工作方式揭秘

    互联网的设计工作常常需要设计师们协同完成,尤其是大型的项目,参与的设计师会更多。在实际工作中,现有的工作方式不能让所有参与项目的设计们很好地进行设计协同。

    用户5009027
  • hive查询报错:java.io.IOException:org.apache.parquet.io.ParquetDecodingException

    转载请务必注明原创地址为:https://dongkelun.com/2018/05/20/hiveQueryException/

    董可伦
  • 关于分词的一些思考

    我发现分词问题并不存在适用于所有领域的通用解决方案,之前我一直以为给词库里加一些专业词汇能够解决一些特定专业的问题,现在一想自己还是太naive了。举两个例子:...

    云时之间
  • 微众银行开发的全球首个工业级联邦学习开源框架 FATE 升级 v1.1!特别支持云上部署

    此外,FATE 还联合 VMware 中国研发开放创新中心云原生实验室的团队一起搞了个「大事」——支持在公有云和私有云中部署及使用,全容器化云原生部署方案。

    AI研习社
  • 如何把设计稿还原成真实网页

    所谓的前端是指什么呢?前端(front-end)是相对后端(back-end)而言的

    公众号php_pachong
  • 如何在腾讯云上启用 PostgreSQL 数据库远程访问?

    本文介绍的就是如何开启 PostgreSQL 数据库远程访问的具体步骤和方法。本文所列操作,也适合希望使用云服务器自建数据库的同学。

    EarlGrey
  • 送给前端的你:可视化快速生成模拟数据服务——Easy Mock

    ? 内容来源:2017年11月18日,大搜车前端工程师高攀在“2017中国开源年会”进行《Easy Mock 接口数据模拟服务》演讲分享。IT 大咖说(微信i...

    IT大咖说

扫码关注云+社区

领取腾讯云代金券