zoukankan      html  css  js  c++  java
  • Spark对复杂结构的处理

    结构体

    创建结构体

    在字符串公式中就是一个”()“就表示一个结构体

        //创建结构体
        //方法1:
        df.selectExpr("(Description, InvoiceNo) as complex", "*").show(2)
        //方法2:
        df.selectExpr("struct(Description, InvoiceNo) as complex", "*").show(2)
    

    查询结构体中的信息使用'.'

    数组

    我们的数组通常是DataFrame的一个元素。

    • split函数
          //对Description的数据进行切分生成数组
          df.select(split(col("Description"), " ").as("array")).show(2)
      
      对数组元素的访问:
         //对Description的数据进行切分生成数组
          val arrayDF = df.select(split(col("Description"), " ").as("array"))
          arrayDF.show(20)
          arrayDF.selectExpr("array[0]").show(20)
      

    下面是一些常用的函数:

    • size(Array[])-查询数组的长度
    • array_contains(Array[], 单词)-查询是否包含
    • explode(重要)
      将Array或者Map中形成一列。具体效果看运行的代码结果:
          //对Description的数据进行切分生成数组
          val arrayDF = df.select(split(col("Description"), " ").as("array"), col("*"))
          arrayDF.show(2)
          arrayDF.withColumn("splittedArray", explode(col("array")))
            .select("Description", "splittedArray").show(8)
      

    map结构

    创建map

        //创建map
        df.select(map(col("Description"), col("InvoiceNo")).as("map")).show(2)
    

    可以使用key值对value进行查询,若key值不存在则返回null

    key值查询

        //创建map
        val mapDF = df.select(map(col("Description"), col("InvoiceNo")).as("map"))
        mapDF.selectExpr("map['WHITE METAL LANTERN']").show(2)
    

    将map的键值对转换成列

        //创建map
        val mapDF = df.select(map(col("Description"), col("InvoiceNo")).as("map"))
        //方法1:
        mapDF.selectExpr("explode(map)").show(2)
        //方法2:
        mapDF.select(explode(col("map"))).show(2)
    
  • 相关阅读:
    第二次作业——结对项目之需求分析与原型模型设计
    第三次作业——结对编程
    采用PowerDesigner 设计数据库
    关于Android开发环境的演变
    广东地区DNS再次瘫痪
    SQL Server 2005 TSQL 中的OUTPUT子句语法
    Visual Studio 里的版本兼容问题
    Javascript 对象扩展积累
    IBatisNet.DataMapper 升级到 1.6.2 之后报错
    ExtJs Extender controls 不错的例子
  • 原文地址:https://www.cnblogs.com/ALINGMAOMAO/p/14450411.html
Copyright © 2011-2022 走看看