products一个商品价格变化的表,orders商品订单,记录每次购买商品和日期
基于Spark SQL中的不等值join实现orders和products的匹配,统计每个订单中商品对应当时的价格

缓慢变化的商品价格表
旺仔牛奶,发生过一次价格变更


scala> val products = sc.parallelize(Array(|   ("旺仔牛奶", "2017-01-01", "2018-01-01", 4),|   ("旺仔牛奶", "2018-01-02", "2020-01-01", 5),|   ("王老吉", "2017-01-02", "2019-01-01", 5),|   ("卫龙辣条", "2010-01-01", "2020-01-01", 2)| )).toDF("name", "startDate", "endDate", "price")
products: org.apache.spark.sql.DataFrame = [name: string, startDate: string ... 2 more fields]scala> products.show();
+----+----------+----------+-----+
|name| startDate|   endDate|price|
+----+----------+----------+-----+
|旺仔牛奶|2017-01-01|2018-01-01|    4|
|旺仔牛奶|2018-01-02|2020-01-01|    5|
|   王老吉|2017-01-02|2019-01-01|    5|
|卫龙辣条|2010-01-01|2020-01-01|    2|
+----+----------+----------+-----+

订单表(商品名称,订单日期)
旺仔牛奶在不同价格时段分别发生了一次订单

scala> val orders = sc.parallelize(Array(|   ("2017-06-01", "旺仔牛奶"),|   ("2017-07-01", "王老吉"),|   ("2018-03-01", "旺仔牛奶")| )).toDF("date", "product")
orders: org.apache.spark.sql.DataFrame = [date: string, product: string]scala> orders.show
+----------+-------+
|      date|product|
+----------+-------+
|2017-06-01|旺仔牛奶|
|2017-07-01|    王老吉|
|2018-03-01|旺仔牛奶|
+----------+-------+

通过不等值连接,计算每个订单当时的商品价格
查看出旺仔牛奶,两个订单在不同时间段上对应的价格

scala> orders.join(products, $"product" === $"name" && $"date" >= $"startDate" && $"date" <= $"endDate").show()
+-----------+------------+----------+------------+-------------+-----+
|     date      |  product   |    name  |   startDate |   endDate   | price|
+-----------+------------+----------+------------+-------------+-----+
|2017-07-01|    王老吉  | 王老吉   |2017-01-02|2019-01-01 |    5  |
|2017-06-01|  旺仔牛奶 |旺仔牛奶|2017-01-01|2018-01-01 |    4  |
|2018-03-01|  旺仔牛奶 |旺仔牛奶|2018-01-02|2020-01-01 |    5  |
+-----------+------------+----------+------------+-------------+-----+

转载于:https://blog.51cto.com/10120275/2171066

spark sql 不等值 join相关推荐

  1. spark sql练习之join操作

    数据集如下:有两个json文件,table1.json和table2.json table1.json {"A":"A1", "B":30, ...

  2. spark sql boardcast join 生效问题探索

    这里写目录标题 本文针对 版本spark 2.2 问题描述 问题排查 broadcast join 自动触发条件. 执行 解决 不能自动触发boardcast join得情况 本文针对 版本spark ...

  3. Spark SQL: Relational Data Processing in Spark

    Spark SQL: Relational Data Processing in Spark Spark SQL : Spark中关系型处理模块 说明: 类似这样的说明并非是原作者的内容翻译,而是本篇 ...

  4. Spark SQL之延伸Hive On Spark

    目录 一:Spark SQL 与 Hive On Spark的区别 二:Hive的基本工作原理 三:Hive On Spark的计算原理 四:Hive On Spark的优化点 五:RPC了解 一:S ...

  5. Spark SQL中出现 CROSS JOIN 问题解决

    Spark SQL中出现 CROSS JOIN 问题解决 参考文章: (1)Spark SQL中出现 CROSS JOIN 问题解决 (2)https://www.cnblogs.com/yjd_hy ...

  6. Spark详解(十四):Spark SQL的Join实现

    1. 简介 Join是SQL语句中的常用操作,良好的表结构能够将数据分散在不同的表中,使其符合某种范式,减少表冗余.更新容错等.而建立表和表之间关系的最佳方式就是Join操作.Join连接是大数据处理 ...

  7. Spark SQL JOIN操作代码示例

    title: Spark SQL JOIN操作 date: 2021-05-08 15:53:21 tags: Spark 本文主要介绍 Spark SQL 的多表连接,需要预先准备测试数据.分别创建 ...

  8. Spark SQL join的三种实现方式

    引言 join是SQL中的常用操作,良好的表结构能够将数据分散到不同的表中,使其符合某种规范(mysql三大范式),可以最大程度的减少数据冗余,更新容错等,而建立表和表之间关系的最佳方式就是join操 ...

  9. 使用 spark sql extensions 实现 skew join

    文章目录 背景 skew hint 实现方式 原理 用法 语法 编译&配置 Test 局限性 参考 背景 使用 Join 时,如果出现数据倾斜就会导致OOM或者单task长时间执行的现象,如果 ...

最新文章

  1. 数据传送到后端(二)
  2. 万字长文!DeepMind科学家总结2021年的15个高能研究
  3. 从 NavMesh 网格寻路回归到 Grid 网格寻路。
  4. SharePoint【Query Options系列】-- Query Options的一些用法 01. 展开用户列信息
  5. 计划策略-52-没有最终装配和没有MTO的计划
  6. Silverlight三维透视+倒影效果
  7. 不定积分24个基本公式_不定积分计算—典型题及解题技巧
  8. 实用技巧:Linux操作系统Vim/Vi编程提速
  9. 3.5 矩阵 $4$ 个空间和方程 $A\mathbf{x}=\mathbf{y}$ 的关系
  10. C++中log的底数理解
  11. python 桌面提醒_python实现桌面托盘气泡提示
  12. 管理小故事精髓 100例(转)
  13. 魔兽世界服务器文件,【魔兽世界7.35】魔兽一键安装服务端[带GM管理工具]
  14. cadence ~ PCB排版 必要流程
  15. cogs2790. mk和tree解题报告
  16. OpenCV 银行卡卡号识别
  17. rampUp时间 jmeter
  18. 鲁棒局部均值分解 (RLMD)附Matlab代码
  19. Python-量化投资(一)
  20. HAN - Heterogeneous Graph Attention Network 异构图注意力网络 WWW 2019

热门文章

  1. JAVA自定义标签教程及实例代码
  2. html静态页面案例
  3. 捷联惯导基础知识解析之一(姿态表示方法基础知识)
  4. FPGA基于SFP光口实现1G千兆网UDP通信 1G/2.5G Ethernet PCS/PMA or SGMII替代网络PHY芯片 提供工程源码和技术支持
  5. VMware Workstation 和 Device/Credential Guard 不兼容
  6. jetson nano上编译与使用西门子PLC通讯库snap7
  7. UE5文本转语音TTS插件
  8. 几何校正,正射校正,影像配准,辐射定标,辐射校正,大气校正,地形校正概念详解
  9. 线性时间选择-分治算法
  10. Makefile生成 静态链接库万能模板(当前文件夹、递归全部文件夹编译成.a)