美文网首页
spark 行专列,列转行

spark 行专列,列转行

作者: 一个懒散的人 | 来源:发表于2021-03-16 18:02 被阅读0次
  1. 目的:数据行专列,列转行
  2. 数据准备:
df = spark.createDataFrame([(1,"age","23|45|67|32"),(3,"score","90|91|92|93")]).toDF("id","typ","ls")

列转行:

df2 = df.withColumn("xx",explode(split("ls","\\|"))).drop("ls")
df2.show()

Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
+---+-----+-----------+
| id|  typ|         ls|
+---+-----+-----------+
|  1|  age|23|45|67|32|
|  3|score|90|91|92|93|
+---+-----+-----------+

+---+-----+---+
| id|  typ| xx|
+---+-----+---+
|  1|  age| 23|
|  1|  age| 45|
|  1|  age| 67|
|  1|  age| 32|
|  3|score| 90|
|  3|score| 91|
|  3|score| 92|
|  3|score| 93|
+---+-----+---+

行专列:

df2.groupBy("id","typ").agg(concat_ws("|",collect_set("xx")).alias("ls2")).show()
+---+-----+-----------+
| id|  typ|        ls2|
+---+-----+-----------+
|  3|score|92|93|91|90|
|  1|  age|23|45|67|32|
+---+-----+-----------+

完整代码:

# coding=utf-8
from pyspark.sql import SparkSession
from pyspark.sql.functions import *


if __name__ == "__main__":
    spark = SparkSession.builder.master("local").getOrCreate()
    #数据准备
    df = spark.createDataFrame([(1,"age","23|45|67|32"),(3,"score","90|91|92|93")]).toDF("id","typ","ls")
    df.show()
    #列转行
    df2 = df.withColumn("xx",explode(split("ls","\\|"))).drop("ls")
    df2.show()

    #行转列
    df2.groupBy("id","typ").agg(concat_ws("|",collect_set("xx")).alias("ls2")).show()

相关文章

  • spark 行专列,列转行

    目的:数据行专列,列转行 数据准备: 列转行: 行专列: 完整代码:

  • sql中列转行unpivot、行转列pivot详细讲解||Mys

    目录:一、sqlserver列转行、行转列详解二、Oracle列转行、行转列详解三、DB2列转行、行转列详解四、M...

  • mysql开发技巧笔记

    行转列 结果 使用 SUM 进行 行转列 列转行 应用场景 属性拆分 etl数据处理 1. 利用序列表处理列转行的...

  • hive 行转列 列转行

    列转行 数据分析时需要行中的数据拆成多列,则需要用到:1,lateral view2,explode原始表tabl...

  • SQL列转行、行转列

    笔者前不久终于发布了自己的APP《小印记》,希望读者能前往App Store下载《小印记》支持一下笔者,谢谢!? ...

  • sql行转列,列转行

    行转列,列转行是我们在开发过程中经常碰到的问题。行转列一般通过CASE WHEN 语句来实现,也可以通过 SQL ...

  • hive行转列,列转行

    难点,加强

  • SQL行转列-列转行

    SQL行转列-列转行 一、行转列 建表语句 插入数据 查询数据表中的内容(即转换前的结果) 先来看一下转换后的结果...

  • 行转列和列转行

    行转列select t.cb , concat_ws ( "|" , collect_set ( t.name...

  • SQL行转列,列转行

    SQL 行转列,列转行 行列转换在做报表分析时还是经常会遇到的,今天就说一下如何实现行列转换吧。 行列转换就是如下...

网友评论

      本文标题:spark 行专列,列转行

      本文链接:https://www.haomeiwen.com/subject/rjirfltx.html