hive 非等值连接, 设置hive为nonstrict模式
1 数据准备
- create table stocks(id int, date string,price string, company string);
- insert into table stocks values
- (1,'2010-01-04','214.01','aapl'),
- (2,'2010-01-05','214.38','aapl'),
- (3,'2010-01-06','210.97','aapl'),
- (4,'2010-01-07','210.58','aapl'),
- (5,'2010-01-08','211.58','aapl'),
- (6,'2010-01-11','210.11','aapl'),
- (7,'2010-01-04','132.45','ibm'),
- (8,'2010-01-05','138.85','ibm'),
- (9,'2010-01-06','129.55','ibm'),
- (10,'2010-01-07','130.0','ibm'),
- (11,'2010-01-08','130.85','ibm'),
- (12,'2006-01-11','121.48','ibm'),
- (13,'2007-01-11','120.48','ibm'),
- (14,'2008-01-11','123.48','ibm');
2 测试等值连接,通过表的自连接
- select a.ymd, a.price, b.price
- from
- stocks a
- inner join
- stocks b
- on a.ymd = b.ymd
- where
- a.company = 'aapl' and b.company = 'ibm';
结果为:
- 2010-01-04 214.01 132.45
- 2010-01-05 214.38 138.85
- 2010-01-06 210.97 129.55
- 2010-01-07 210.58 130.0
- 2010-01-08 211.58 130.85
3 测试非等值连接,通过表的自连接
- select a.ymd,b.ymd, a.price, b.price
- from
- stocks a
- inner join
- stocks b
- on a.ymd <= b.ymd
- where a.company = 'aapl' and b.company = 'ibm'
- order by a.ymd asc;
报错如下:
- FAILED: SemanticException Cartesian products are disabled for safety reasons.
- If you know what you are doing, please sethive.strict.checks.cartesian.product to false and that hive.mapred.mode is not set to 'strict' to proceed.
- Note that if you may get errors or incorrect results if you make a mistake while using some of the unsafe features.
- 当前hive运行在strict模式,该模式下:
- - 不能进行表的笛卡尔积连接
- - order by语句必须带有limit:order by在一个reducer中执行,容易成为性能瓶颈
- - 带分区表的查询必须使用分区字段,在where条件中
解决方式:
- set hive.mapred.mode=nonstrict;
之后,再次执行非等值连接即可得到结果:
- aapl时间 ibm时间 aapl价格 ibm价格
2010-01-04 2010-01-04 214.01 132.45- 2010-01-04 2010-01-05 214.01 138.85
- 2010-01-05 2010-01-05 214.38 138.85
- 2010-01-04 2010-01-06 214.01 129.55
- 2010-01-05 2010-01-06 214.38 129.55
- 2010-01-06 2010-01-06 210.97 129.55
- 2010-01-04 2010-01-07 214.01 130.0
- 2010-01-05 2010-01-07 214.38 130.0
- 2010-01-06 2010-01-07 210.97 130.0
- 2010-01-07 2010-01-07 210.58 130.0
- 2010-01-04 2010-01-08 214.01 130.85
- 2010-01-05 2010-01-08 214.38 130.85
- 2010-01-06 2010-01-08 210.97 130.85
- 2010-01-07 2010-01-08 210.58 130.85
- 2010-01-08 2010-01-08 211.58 130.85
hive 非等值连接, 设置hive为nonstrict模式的更多相关文章
- hive 动态分区数设置
当对hive分区未做设置时,报错如下: Caused by: org.apache.hadoop.hive.ql.metadata.HiveFatalException: [Error 20004]: ...
- 【配置】检测到在集成的托管管道模式下不适用的ASP.NET设置的解决方法(非简单设置为【经典】模式)。
× 检测到在集成的托管管道模式下不适用的ASP.NET设置的解决方法(非简单设置为[经典]模式). 我们将ASP.NET程序从IIS6移植到IIS7,可能运行提示以下错误: HTTP 错误 5 ...
- hive sql常用整理-hive引擎设置
遇到个情况,跑hive级联insert数据报错,可以尝试换个hive计算引擎 hive遇到FAILED: Execution Error, return code 2 from org.apache. ...
- Hive教程之metastore的三种模式
Hive中metastore(元数据存储)的三种方式: 内嵌Derby方式 Local方式 Remote方式 [一].内嵌Derby方式 这个是Hive默认的启动模式,一般用于单元测试,这种存储方式有 ...
- 【转】检测到在集成的托管管道模式下不适用的ASP.NET设置的解决方法(非简单设置为【经典】模式)。
检测到在集成的托管管道模式下不适用的ASP.NET设置的解决方法(非简单设置为[经典]模式). 我们将ASP.NET程序从IIS6移植到IIS7,可能运行提示以下错误: HTTP 错误 500.23 ...
- linux安装卸载MySQL以及密码设置+Hive测试
linux系统卸载MYSQL 1,先通过yum方式卸载mysql及相关组件 命令:yum remove mysql* 2.通过命令:rpm -qa|grep -i mysql 查找系统的有关于mysq ...
- 【Hive学习之八】Hive 调优【重要】
环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 jdk8 hadoop-3.1.1 apache-hive-3.1.1 ...
- Hive(十)Hive性能调优总结
一.Fetch抓取 1.理论分析 Fetch抓取是指,Hive中对某些情况的查询可以不必使用MapReduce计算.例如:SELECT * FROM employees;在这种情况下,Hive可以简单 ...
- Hive QL——深入浅出学Hive
第一部分:DDL DDL •建表 •删除表 •修改表结构 •创建/删除视图 •创建数据库 •显示命令 建表 CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_ ...
随机推荐
- ,vue-router使用心得
今天周末,趁着没事,自学了一下vue-router,对于vue的路由跳转,目前我遇到了router-link和this.$router.push(或者this.$router.replace)这种 ...
- js的关于for的语句
JavaScript for...in 语句 for...in 语句用于对数组或者对象的属性进行循环操作. for ... in 循环中的代码每执行一次,就会对数组的元素或者对象的属性进行一次操作. ...
- Oralce数据库的优化
Oralce数据库的优化(面试必问) (1) 选择最有效率的表名顺序(只在基于规则的优化器中有效):ORACLE 的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 ...
- Floyd判断环算法总结
Floyd判断环算法 全名Floyd’s cycle detection Algorithm, 又叫龟兔赛跑算法(Floyd's Tortoise and Hare),常用于链表.数组转化成链表的题目 ...
- 凯撒密码移位python
#!/usr/bin/python'''凯撒密码'''a="gmbhqwertghjkcvbzn"s=[""]*len(a)for j in range(26) ...
- spring cloud 服务A调用服务B自定义token消失,记录
后端:spring cloud 前端:vue 场景:前端ajax请求,包装自定义请求头token到后台做验证,首先调用A服务,A服务通过Feign调用B服务发现自定义token没有传到B服务去; 原因 ...
- 1.2 SQL运算与控制程序执行流程
列出需要注意和学习的运算 1.取余 2.begin....end:中间包含两条或两条以上的SQL语句 3.case:进行多重选择,免于写if then的嵌套循环. 通配符:(实现模糊查询) %: ...
- 文件6. 查找替换.txt文本文件中的内容
servlet实现对文本文件的查找替换 .jsp界面 <form> <table> <tr> <td>选择文本文件:</td> <td ...
- 18.Canny边缘检测
Canny边缘检测算法以Canny的名字命名,其中Canny的目标是找到一个最优的边缘检测算法,其有三种衡量标准: 低错误率:标识出尽可能多的实际边缘,同时尽可能的减少噪声产生的误报 高定位性:标识出 ...
- web.1
<!DOCTYPE html><html><head><meta charset="utf-8"> <title>毛哥调 ...