IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> SQL理论知识第一部分 -> 正文阅读

[大数据]SQL理论知识第一部分

1、 hive sql中 ‘’ 和 null 之间区别?

  • 概念区别
    null 表示没有有任何值
    ‘’ 表示没有一个空的字符串
  • 使用区别
    在数据表中,如果一个字段没有值,通常默认为 null ,而 ‘’ 是需要自行设置。
    如果字段类型为字符串,null 和 ‘’ 显示出来一样。我们插入数据时,null 在数值型和字符串型存储形式都是默认 /N,而 ‘’ 在字符串型中保持 ‘’ ,而在数值型则为 /N。
    查询表中 null 和 ‘’ 的数据:
select col from tablename where col is null or col is not null
select col from tablename where col = '' or col <> ''

2、Hive中order by、sort by、distribute by、cluster by用法

  • order by :全局排序,所有的数据经过一个reduce处理,对于大批量数据执行时间较长,还会面临运行失败的情况。如果set hive.mapred.mode=strict,将MR模式设置为严格模式,order by后面必须有limit才能避免报错,成功运行。
  • sort by :局部排序,在每个reduce中数据有序,对输出的数据进行归并排序即可得到全局排序。sort by 优点是为全局排序提高效率。
  • distrrbute by :控制map端输出划分到不同的reducer中,distribute by根据后面的列,reduce个数进行分发,默认采用的是hash算法。
    注意:distribute by保证相同的key值划分在同一个reduce中,但由于划分规则需要考虑hash码和reduce个数,意味着同一个分区中的分区字段不一定相同。
    例如,下图年份的key有四个不同的值,但reduce只有三个,自然会出现不同的key在一个reduce中。
    在这里插入图片描述
  • cluster by :其功能就是distribute by和sort by相结合,但是排序只能是升序排序,不能指定排序规则为 asc 或者 desc。
    注意:distribute by和sort by字段相同时,可以使用cluster by 代替distribute by和sort by。
    例如,
select mid, money, name from store distribute by mid sort by mid
等价于
select mid, money, name from store cluster by mid

3、连接查询中,on和where条件含义

  • 对于left join,无论on后面接什么条件,左表的记录都会查询出来,因此想要过滤则需要where条件。
  • 对于inner join,则可以通过on后面加上一些条件达到过滤目的。同样也可以通过where条件。

对于上述说法,通过例子具体说明:
现有两张表,tab1和tab2
tab1

tab1

在这里插入图片描述

tab2
1select * from tab1 left join tab2 on tab1.size = tab2.size and tab1.id = 1

结果如下
在这里插入图片描述

2select * from tab1 left join tab2 on tab1.size = tab2.size and tab2.name = 'bbb'

结果如下
在这里插入图片描述

3select * from tab1 left join tab2 on tab1.size = tab2.size where tab2.name = 'bbb'

结果如下
在这里插入图片描述

4select * from tab1 inner join tab2 on tab1.size = tab2.size and tab2.name = 'ccc'
相当于
select * from tab1 inner join tab2 on tab1.size = tab2.size where tab2.name = 'ccc'

结果如下
在这里插入图片描述

从以上的查询结果可以看出,对于left join,on的条件是否为真都会返回左表全部记录,而把条件放在where后,则会过滤掉不符合条件的记录。而对于inner join来说,条件放在on和where结果一致。

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-09-13 11:22:42  更:2022-09-13 11:24:35 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 10:24:16-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码