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
    
  • 相关阅读:
    cacti (可以利用yum安装cacti的配置)
    zabbix
    HA集群
    DNS搭建
    MySQL主从配置
    解析jsp的 tomcat 、resin
    samba
    squid 代理服务
    Application binary interface and method of interfacing binary application program to digital computer
    Pyqt4的事件与信号
  • 原文地址:https://www.cnblogs.com/TTyb/p/9717439.html
Copyright © 2011-2022 走看看