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模式的更多相关文章

  1. hive 动态分区数设置

    当对hive分区未做设置时,报错如下: Caused by: org.apache.hadoop.hive.ql.metadata.HiveFatalException: [Error 20004]: ...

  2. 【配置】检测到在集成的托管管道模式下不适用的ASP.NET设置的解决方法(非简单设置为【经典】模式)。

      ×   检测到在集成的托管管道模式下不适用的ASP.NET设置的解决方法(非简单设置为[经典]模式). 我们将ASP.NET程序从IIS6移植到IIS7,可能运行提示以下错误: HTTP 错误 5 ...

  3. hive sql常用整理-hive引擎设置

    遇到个情况,跑hive级联insert数据报错,可以尝试换个hive计算引擎 hive遇到FAILED: Execution Error, return code 2 from org.apache. ...

  4. Hive教程之metastore的三种模式

    Hive中metastore(元数据存储)的三种方式: 内嵌Derby方式 Local方式 Remote方式 [一].内嵌Derby方式 这个是Hive默认的启动模式,一般用于单元测试,这种存储方式有 ...

  5. 【转】检测到在集成的托管管道模式下不适用的ASP.NET设置的解决方法(非简单设置为【经典】模式)。

    检测到在集成的托管管道模式下不适用的ASP.NET设置的解决方法(非简单设置为[经典]模式). 我们将ASP.NET程序从IIS6移植到IIS7,可能运行提示以下错误: HTTP 错误 500.23 ...

  6. linux安装卸载MySQL以及密码设置+Hive测试

    linux系统卸载MYSQL 1,先通过yum方式卸载mysql及相关组件 命令:yum remove mysql* 2.通过命令:rpm -qa|grep -i mysql 查找系统的有关于mysq ...

  7. 【Hive学习之八】Hive 调优【重要】

    环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 jdk8 hadoop-3.1.1 apache-hive-3.1.1 ...

  8. Hive(十)Hive性能调优总结

    一.Fetch抓取 1.理论分析 Fetch抓取是指,Hive中对某些情况的查询可以不必使用MapReduce计算.例如:SELECT * FROM employees;在这种情况下,Hive可以简单 ...

  9. Hive QL——深入浅出学Hive

    第一部分:DDL DDL •建表 •删除表 •修改表结构 •创建/删除视图 •创建数据库 •显示命令 建表 CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_ ...

随机推荐

  1. secureCRT保存屏幕输出内容

    1.有时执行一个mysql语句,屏幕打印行过多,需要设置翻动最大行数 打开Options Session Options–>Terminal–>Emulation,在Scrollback输 ...

  2. java使用SimpleDateFormat实现字符串和日期的相互转换

    public class TimeTwo { public static void main(String[] args) throws ParseException{ String s = &quo ...

  3. java根据#号截取字符串,使用Pattern的方法

    public class Regex1 { public static void main(String[] args) { String s = "神秘的海洋出现了一只#话题#海怪阿拉斯加 ...

  4. 笨办法41学会说面向对象【pyinstaller安装使用

    urllib库安装 先切换到pip所在目录 D:\Program Files\JetBrains\PyCharm 2017.3.3\untitled>cd /d c:\ c:\>cd c: ...

  5. 页面中直接显示FTP中的图片

    页面中直接显示FTP中的图片 FTP根目录下有一张图片,如下 第一步: 通过如下格式,在浏览器上输入路径,确定可看到图片 ftp://root:root@127.0.0.1/111.png ftp:/ ...

  6. nginx之location的匹配规则

    nginx之location的匹配规则 一.语法规则 location [=|~|~*|^~] /uri/ { - } 符号 含义 = 开头表示精确匹配 ^~ 开头表示 uri 以某个常规字符串开头 ...

  7. tar: Exiting with failure status due to previous errors

    发生在tar压缩或者解压缩的过程中,原因是压缩包在建立的时候是用了sudo的,所以你解压的时候也要加上sudo,问题就很好解决了的

  8. 第十二周翻译-《Pro SQL Server Internals, 2nd edition》

    <Pro SQL Server Internals, 2nd edition> 作者:Dmitri Korotkevitch 翻译:赖慧芳 译文: 专业SQL服务器内部 了解在引擎盖下发生 ...

  9. 2018-2019-2 20175224 实验一《Java开发环境的熟悉》实验报告

    实验报告封面 实验内容与步骤 Java开发环境的熟悉-1 1.建立“自己学号exp1”的目录 2.在“自己学号exp1”目录下建立src,bin等目录 3.javac.java的执行在“自己学号exp ...

  10. c++中,如果访问数组越界,程序可能会意外终止(像死循环)

    #include<iostream> using namespace std; ];// int main(){ vis[]=;//访问越界 ; } 程序错误表现: