• pyspark 基本api使用说明(一)


    1.Array Schema转换到Sting Schema ——array_join()方法

    使用案例:

    原始数据如下图所示:

    df.show()

    df1 = df.select(array_join(df3.user_array, ",").alias("joined"), 'umid', 'user_array')

    df1.show()

     2.Sting Schema 转换成 Array Schema

    其中,主要有以下三种方式:

    2.1 split()方法

    2.2 Array()方法

    2.3 自定义udf函数(灵活,但是效率低)

    案例:

    原始数据如上图所示,

    df2 = df1.withColumn('array1', array('joined')).withColumn('array2', split(col('joined'), ','))

    df2.show()

     3.针对Array[Array]Schema,变换成Array[String]的方法——flatten()方法

    pyspark中flatten()方法,实现的功能类似于下面的案例:

    [1,3,[4,5], [7,9.9]] --->(flatten)----->[1,3,4,5,7,9,9]

    4.字符串聚合操作——collect_set collect_list

    这两个都是针对String类型的聚合操作,类似于数值类型的sum、avg等,使用案例为

    df = spark.createDataFrame([
    ("a", "code1", "name1"),
    ("a", "code1", "name1"),
    ("a", "code2", "name2"),
    ], ["id", "code", "name"])

    df.groupBy('id').agg(collect_set('code').alias('collect_set_test'), collect_list('name').alias('collect_list_test')

     备注:

    1)collect_set和collect_list的区别是:collect_set实现去重的功能。

    2)针对Array Schema的DataFrame直接落地es中,需要额外注意(将在下节中,spark数据库连接中进行特殊说明)

  • 相关阅读:
    用python比对csv文件中的数据
    markdown图床
    java里一些类所属的包
    edge浏览器中http网站url不显示http只显示不安全
    刮卡一样处理自己的图片
    rss之光——irreader
    lombok的Data注解没有使setter起作用
    某端口被占用的解决方法
    如何避免公司加班的神坑
    面试题8:旋转数组的最小数字
  • 原文地址:https://www.cnblogs.com/tomorrow-hope/p/13885431.html
Copyright © 2020-2023  润新知