zoukankan      html  css  js  c++  java
  • 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
    
  • 相关阅读:
    有道
    excel 数据入库
    iso-8859-1 Unicode 编码
    爬虫编码问题
    WIKi 百科爬虫
    降低耦合性获取微博数据
    Python基础总结3-字符串
    Python基础总结2
    Linux常用命令04(其他命令)
    Linux常用命令03(系统信息)
  • 原文地址:https://www.cnblogs.com/TTyb/p/9717439.html
Copyright © 2011-2022 走看看