spark sql 不等值 join
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相关推荐
- spark sql练习之join操作
数据集如下:有两个json文件,table1.json和table2.json table1.json {"A":"A1", "B":30, ...
- spark sql boardcast join 生效问题探索
这里写目录标题 本文针对 版本spark 2.2 问题描述 问题排查 broadcast join 自动触发条件. 执行 解决 不能自动触发boardcast join得情况 本文针对 版本spark ...
- Spark SQL: Relational Data Processing in Spark
Spark SQL: Relational Data Processing in Spark Spark SQL : Spark中关系型处理模块 说明: 类似这样的说明并非是原作者的内容翻译,而是本篇 ...
- Spark SQL之延伸Hive On Spark
目录 一:Spark SQL 与 Hive On Spark的区别 二:Hive的基本工作原理 三:Hive On Spark的计算原理 四:Hive On Spark的优化点 五:RPC了解 一:S ...
- Spark SQL中出现 CROSS JOIN 问题解决
Spark SQL中出现 CROSS JOIN 问题解决 参考文章: (1)Spark SQL中出现 CROSS JOIN 问题解决 (2)https://www.cnblogs.com/yjd_hy ...
- Spark详解(十四):Spark SQL的Join实现
1. 简介 Join是SQL语句中的常用操作,良好的表结构能够将数据分散在不同的表中,使其符合某种范式,减少表冗余.更新容错等.而建立表和表之间关系的最佳方式就是Join操作.Join连接是大数据处理 ...
- Spark SQL JOIN操作代码示例
title: Spark SQL JOIN操作 date: 2021-05-08 15:53:21 tags: Spark 本文主要介绍 Spark SQL 的多表连接,需要预先准备测试数据.分别创建 ...
- Spark SQL join的三种实现方式
引言 join是SQL中的常用操作,良好的表结构能够将数据分散到不同的表中,使其符合某种规范(mysql三大范式),可以最大程度的减少数据冗余,更新容错等,而建立表和表之间关系的最佳方式就是join操 ...
- 使用 spark sql extensions 实现 skew join
文章目录 背景 skew hint 实现方式 原理 用法 语法 编译&配置 Test 局限性 参考 背景 使用 Join 时,如果出现数据倾斜就会导致OOM或者单task长时间执行的现象,如果 ...
最新文章
- 数据传送到后端(二)
- 万字长文!DeepMind科学家总结2021年的15个高能研究
- 从 NavMesh 网格寻路回归到 Grid 网格寻路。
- SharePoint【Query Options系列】-- Query Options的一些用法 01. 展开用户列信息
- 计划策略-52-没有最终装配和没有MTO的计划
- Silverlight三维透视+倒影效果
- 不定积分24个基本公式_不定积分计算—典型题及解题技巧
- 实用技巧:Linux操作系统Vim/Vi编程提速
- 3.5 矩阵 $4$ 个空间和方程 $A\mathbf{x}=\mathbf{y}$ 的关系
- C++中log的底数理解
- python 桌面提醒_python实现桌面托盘气泡提示
- 管理小故事精髓 100例(转)
- 魔兽世界服务器文件,【魔兽世界7.35】魔兽一键安装服务端[带GM管理工具]
- cadence ~ PCB排版 必要流程
- cogs2790. mk和tree解题报告
- OpenCV 银行卡卡号识别
- rampUp时间 jmeter
- 鲁棒局部均值分解 (RLMD)附Matlab代码
- Python-量化投资(一)
- HAN - Heterogeneous Graph Attention Network 异构图注意力网络 WWW 2019
热门文章
- JAVA自定义标签教程及实例代码
- html静态页面案例
- 捷联惯导基础知识解析之一(姿态表示方法基础知识)
- FPGA基于SFP光口实现1G千兆网UDP通信 1G/2.5G Ethernet PCS/PMA or SGMII替代网络PHY芯片 提供工程源码和技术支持
- VMware Workstation 和 Device/Credential Guard 不兼容
- jetson nano上编译与使用西门子PLC通讯库snap7
- UE5文本转语音TTS插件
- 几何校正,正射校正,影像配准,辐射定标,辐射校正,大气校正,地形校正概念详解
- 线性时间选择-分治算法
- Makefile生成 静态链接库万能模板(当前文件夹、递归全部文件夹编译成.a)