首页
学习
活动
专区
圈层
工具
发布

Spark SQL 中的array类的函数例子

需求背景:在理财 APP 中,素材、广告位、产品、策略有时候是多对多的关系。比如,在内容中台,一个素材可能关联理财、基金、存款某些产品,那我们统计该素材的好不好,转化率好不好,该归属于哪些业务?...再进而计算某些业务的贡献,就可能需要用到数组。还是不怎么看文档,因为文档的例子不够直观。...-- Spark 3.0 中,STRING_AGG 函数被引入作为 SQL:2016 标准的一部分。你可以使用 STRING_AGG 函数将每个分组的数据拼接成一个字符串。...,查询选修数据的同学的所有选修课程,结果中的选修课程是数组类型-- 创建表的第二种形式,student_copy 是create table student_copy as select name, collect_list...select array_distinct(courses) from student_copy -- array_distinct(x )→ x:去重:删除数组x中重复元素。

1.1K11
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    大数据技术之_24_电影推荐系统项目_06_项目体系架构设计 + 工具环境搭建 + 创建项目并初始化业务数据 + 离线推荐服务建设 + 实时推荐服务建设 + 基于内容的推荐服务建设

    ,融合存储在 Redis 中的用户最近评分队列数据,提交给实时推荐算法,完成对用户新的推荐结果计算;计算完成之后,将新的推荐结构和 MongDB 数据库中的推荐结果进行合并。...另外,在实时推荐中由于时间性能上要满足实时或者准实时的要求,所以算法的计算量不能太大,避免复杂、过多的计算造成用户体验的下降。鉴于此,推荐精度往往不会很高。...(num: Int, uid: Int, jedis: Jedis): Array[(Int, Double)] = {     // 从 redis 中读取数据,用户评分数据保存在 uid:UID 为...[Int], userRecentlyRatings: Array[(Int, Double)],                          simMovies: scala.collection.Map...[Int, scala.collection.immutable.Map[Int, Double]]): Array[(Int, Double)] = {     // 定义一个 ArrayBuffer

    5.8K51

    大数据技术之_28_电商推荐系统项目_02

    4.2 离线统计服务 4.2.1 离线统计服务主体框架   在 recommender 下新建子项目 StatisticsRecommender,pom.xml 文件中只需引入 spark、scala...// 数据格式 RDD[(scala.Int, scala.Array[scala.Double])]     val productFeaturesRDD = model.productFeatures.map...另外,在实时推荐中由于时间性能上要满足实时或者准实时的要求,所以算法的计算量不能太大,避免复杂、过多的计算造成用户体验的下降。鉴于此,推荐精度往往不会很高。...Double]]) = {     // 1、定义一个长度可变的数组 scala ArrayBuffer,用于保存每一个候选商品的基础得分     val scores = ArrayBuffer[(Int..., Double)]()     // 2、定义两个可变的 scala HashMap,用于保存每一个候选商品的增强因子和减弱因子     val increMap = HashMap[Int, Int

    5K21

    推荐系统那点事 —— 基于Spark MLlib的特征选择

    在SparkMLlib中为我们提供了几种特征选择的方法,分别是VectorSlicer、RFormula和ChiSqSelector。...,卡方检验是一种计算变量独立性的检验手段。...具体的可以参考维基百科,最终的结论就是卡方的值越大,就是我们越想要的特征。因此这个选择器就可以理解为,再计算卡方的值,最后按照这个值排序,选择我们想要的个数的特征。...,features:org.apache.spark.mllib.linalg.Vector,clicked:Double){} } 这样得到的结果: +---+------------------+-...参考 1 Spark特征处理 2 Spark官方文档 3 如何优化逻辑回归 4 数据挖掘中的VI和WOE 5 Spark卡方选择器 6 卡方分布 7 皮尔逊卡方检验 8 卡方检验原理

    1.6K90

    Spark之【RDD编程】详细讲解(No2)——《Transformation转换算子》

    ) 案例 1.作用:计算差的一种函数,去除两个RDD中相同的元素,不同的RDD将保留下来。...2.需求:创建一个pairRDD,将相同key对应值聚合到一个sequence中,并计算相同key对应值的相加结果。...24 2)计算相同key对应值的相加结果 scala> val reduce = rdd.reduceByKey((x,y) => x+y) reduce: org.apache.spark.rdd.RDD...中,按key将value进行分组合并,合并时,将每个value和初始值作为seq函数的参数,进行计算,返回的结果作为一个新的kv对,然后再将结果按照key进行合并,最后将每个分组的value传递给combine...{case (key,value) => (key,value._1/value._2.toDouble)} result: org.apache.spark.rdd.RDD[(String, Double

    2.2K20

    【Spark数仓项目】需求三:地图位置解析进一步优化

    维表中的数据是全国的地理位置hash解析,是公开的,我们提前准备好的数据库资源。但是ods层实际用户坐标的地理hash可能有不在维表中的情况,因此有了本需求,即结合高德api完善维表中的信息。...,则产生数据膨胀问题 需求三,现在我们的优化是: 1.如果用户上报的地理位置计算的geohash5在dim.area_geo维表中不存在 2.则调用高德api查询对应的省市区,并且插入dim.area_geo...该函数根据经纬度计算出对应的 Geohash5,并根据该 Geohash5 查询相应的省市区信息。...通过读取 dim.area_geo 维度表和临时表 tmp.event_log_splited,进行数据处理和计算,并最终将结果插入到 dwd.event_log_detail 表中。...(acc1) spark.udf.register("parse_city",(latitude:Double,longitude:Double) => { //计算用户上报经纬度的

    26010

    快速入门Flink (4) —— Flink批处理的DataSources和DataSinks,你都掌握了吗?

    写在前面: 博主是一名大数据的初学者,昵称来源于《爱丽丝梦游仙境》中的Alice和自己的昵称。...作为一名互联网小白,写博客一方面是为了记录自己的学习历程,一方面是希望能够帮助到很多和自己一样处于起步阶段的萌新。由于水平有限,博客中难免会有一些错误,有纰漏之处恳请各位大佬不吝赐教!...Flink作为一款流式计算框架,它可用来做批处理,即处理静态的数据集、历史的数据集;也可以用来做流处理,即实时的处理些实时数据流,实时的产生数据流结果,只要数据源源不断的过来,Flink 就能够一直计算下去...{ArrayBuffer, ListBuffer} import scala.collection.mutable /** * 读取集合中的批次数据 */ object BatchFromCollectionDemo...用 Array 创建DataSet val ds2: DataSet[String] = env.fromCollection(Array("spark","flink")) ds2.print

    1.7K20

    StructredStreaming+Kafka+Mysql(Spark实时计算| 天猫双十一实时报表分析)

    前言 每年天猫双十一购物节,都会有一块巨大的实时作战大屏,展现当前的销售情况。这种炫酷的页面背后,其实有着非常强大的技术支撑,而这种场景其实就是实时报表分析。.../** * 模拟生产订单数据,发送到Kafka Topic中 * Topic中每条数据Message类型为String,以JSON格式数据发送 * 数据转换: * 将Order...>2.11.12scala.version> scala.binary.version>2.11scala.binary.version> spark.version...利用流式计算实时得出结果直接被推送到前端应用,实时显示出重要指标的变换情况。 ​ 最典型的案例便是淘宝双十一活动,每年双十一购物节,除疯狂购物外,最引人注目的就是双十一大屏不停跳跃的成交总额。...在整个计算链路中包括从天猫交易下单购买到数据采集,数据计算,数据校验,最终落到双十一大屏上展示的全链路时间压缩在5秒以内,顶峰计算性能高达数三十万笔订单/秒,通过多条链路流计算备份确保万无一失。

    1.6K20

    4.4 共享变量

    而Spark提供两种模式的共享变量:广播变量和累加器。Spark的第二个抽象便是可以在并行计算中使用的共享变量。...[Int]] = Broadcast(0) scala> broadcastVar.value res0: Array[Int] = Array(1, 2, 3) 在广播变量被创建后,可以在集群运行的任何函数中代替...另外,对象v不能在广播后修改,这样可以保证所有节点收到相同的广播值。 4.4.2 累加器 累加器是一种只能通过关联操作进行“加”操作的变量,因此可以在并行计算中得到高效的支持。...类似MapReduce中的counter,可以用来实现计数和求和等功能。Spark原生支持Int和Double类型的累加器,程序员可以自己添加新的支持类型。...并对广播变量和累加器两种模式的共享变量进行了讲解,但是在此仅仅讲解了RDD的基础相关部分,对RDD在执行过程中的依赖转换,以及RDD的可选特征优先计算位置(preferred locations)和分区策略

    1.5K120
    领券