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. Html+css学习笔记二 标题

    学习新标签,标题 <html> <head> <title>tags</title> </head> <body> <h1 ...

  2. [宽度优先搜索] FZU-2150 Fire Game

    Fat brother and Maze are playing a kind of special (hentai) game on an N*M board (N rows, M columns) ...

  3. mysql的报错

    这个错误是因为mysql的进程错误关闭导致的,我们需要把/var/lib/mysql/mysql.sock文件删除或者改名,之后再重启就ok

  4. CodeForces - 1101B

    题目: B. Accordion time limit per test 3 seconds memory limit per test 256 megabytes input standard in ...

  5. 关于Opengl投影矩阵

    读 http://www.songho.ca/opengl/gl_projectionmatrix.html 0.投影矩阵的功能: 将眼睛空间中的坐标点 [图A的视椎体]     映射到     一个 ...

  6. Linux安装软件、python开发环境

    软件安装与卸载 更新Ubuntu软件下载地址 1. 寻找国内镜像源 所谓的镜像源:可以理解为提供下载软件的地方,比如Android手机上可以下载软件的91手机助手:iOS手机上可以下载软件的AppSt ...

  7. TCP端口检测工具

    很多时候,我们需要测试 tcp 端口.ping 命令虽然好用,但不能测试端口,因为 ping 基于ICMP协议,属于IP层协议,所以无法测试传输层的 TCP/UDP 端口.幸好有tcping命令,可以 ...

  8. 解决Chrome浏览器访问https提示“您的连接不是私密连接”的问题

    安装fiddler后,使用Chrome访问https网站时,可能会出现以下错误,本文说明如何解决此类问题: “您的连接不是私密连接”.“NET::ERR_CERT_AUTHORITY_INVALID” ...

  9. Redis安装以及Java客户端jedis连接不上相关问题解决

    安装步骤 1.由于Redis是由C 语言编写的 所以虚拟机编译需要C的编译环境 用命令 yum install gcc-c++ 2.用SFTP上传Redis安装包并解压 3.进入Redis源码目录 b ...

  10. 【5】用vector进行直接插入排序

    百分百自己编的程序,越来越觉得编程很好玩了. 但这算是第一次自己用vector这种不是那么无脑的方法编程,只能最多对3个数进行排序wwwww 今天我要回去搬宿舍了,等明天有时间,我一定要把bug找到! ...