千家信息网

SQL Hive中的Select Fromsql怎么使用

发表于:2025-02-23 作者:千家信息网编辑
千家信息网最后更新 2025年02月23日,这篇"SQL Hive中的Select Fromsql怎么使用"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,
千家信息网最后更新 2025年02月23日SQL Hive中的Select Fromsql怎么使用

这篇"SQL Hive中的Select Fromsql怎么使用"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"SQL Hive中的Select Fromsql怎么使用"文章吧。

Select Fromsql里面最基本的查询语句,select*from后面加表名,这样查询出来是这个表里面的所以数据,后面还可以加where条件挑选,也能够加Orderby排序,也能够加groupby分组。

01-查询表中的内容

查询指定的某一列或某几列,命令如下:

SELECT 列名1,列名2,…… FROM 表名;

查询表中的所有字段时,可以使用代表所有字段。星号()是选取所有列的快捷方式。命令如下:

SELECT * FROM 表名;

如果我们想查询表 t_od_use_cnt 中的所有的user_id和use_cnt,具体命令如下:

SELECT user_id     ,use_cntFROM app.t_od_use_cnt;

备注:app是数据库名,如果当前查询表与当前使用数据库一致,可以省略不写

02-Hive严格模式

在Hive中这样写虽然语法正确(不加分区),但在实际工作中这样写很可能会报错。

因为Hive中的表一般数据量极大,为了防止用户误操作进行全表扫描,可以设置为查询分区表时必须加入分区限制。比如这里我们的分区字段是date_8这个日期字段,工作中的表会要求我们必须限定查询哪几天的分区数据。这里我们可以输入设置参数进行模拟,命令如下:

hive (app)> set hive.mapred.mode;hive.mapred.mode=nonstricthive (app)> set hive.mapred.mode=strict;hive (app)> set hive.mapred.mode;hive.mapred.mode=strict

然后我们重新执行上面的查询语句,报错如下:

hive (app)> SELECT user_id         >       ,use_cnt         > FROM app.t_od_use_cnt;FAILED: SemanticException [Error 10041]: No partition predicate found for Alias "t_od_use_cnt" Table "t_od_use_cnt"hive (app)>

如下使用where语句限定分区即可解决这个问题:

SELECT user_id     ,use_cntFROM app.t_od_use_cntWHERE date_8 = '20210420';

03-limit限制查询返回行数

上面的查询语句会返回查询到的所有数据,但有时候我们只是要确认一下表中的数据内容,或者要指定行数据,比如只要100行,这时只需要在查询语句后加上(limit 数字)即可。

查询表t_od_use_cnt中前5行数据,命令如下:

SELECT user_id     ,use_cntFROM app.t_od_use_cntWHERE date_8 = 20190101 Limit 5;

运行结果如下:

hive (app)> SELECT user_id         >       ,use_cnt         > FROM app.t_od_use_cnt         > WHERE date_8 = 20210420 Limit 5;OKuser_id  use_cnt10000  610001  4910002  2310003  110004  29Time taken: 0.829 seconds, Fetched: 5 row(s)hive (app)>

04-列四则运算

在查询时可以对数值类型的字段进行加减乘除和取余等四则运算

下面我们将表t_od_use_cnt中use_cnt列和is_active列相乘得到一个新列,其他用法依次类推。

hive (app)> SELECT user_id         >       ,use_cnt         >       ,is_active         >       ,use_cnt * is_active         > FROM app.t_od_use_cnt         > WHERE date_8 = 20210420 Limit 5;OKuser_id  use_cnt  is_active  _c310000  6  1  610001  49  1  4910002  23  1  2310003  1  0  010004  29  1  29Time taken: 0.124 seconds, Fetched: 5 row(s)hive (app)>

05-列别名

可以看到上面的例子中我们通过两个列相乘人为制造出一个新列,系统默认将其列名起为_c3。通常有必要给这些新产生的列起一个别名。已有列的列名如果含义不清晰也可以通过起别名的方式进行更改。不过别名只在本条SQL语句中生效,不影响原表中的字段名。

这里顺便介绍一下字段命名规则:

1.不能和已有字段重复

2.只能包括小写字母(a-z)、数字(0-9)、下划线(_)

3.以字母开头

4.单词之间用下划线_分割

这里我们将别名起为active_use_cnt,在列后面加 AS active_use_cnt即可。另AS可以省略,只用空格分隔别名也可以生效

hive (app)> SELECT user_id         >       ,use_cnt         >       ,is_active         >       ,use_cnt * is_active AS active_use_cnt         > FROM app.t_od_use_cnt         > WHERE date_8 = 20210420 Limit 5;OKuser_id  use_cnt  is_active  active_use_cnt10000  6  1  610001  49  1  4910002  23  1  2310003  1  0  010004  29  1  29Time taken: 0.239 seconds, Fetched: 5 row(s)hive (app)>

以上就是关于"SQL Hive中的Select Fromsql怎么使用"这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注行业资讯频道。

查询 数据 字段 内容 别名 语句 命令 查询表 面的 四则运算 下划线 四则 字母 数字 数据库 文章 方式 知识 篇文章 工作 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 软件开发和硬件测试哪个工资高 网络不通或服务器忙 天津曙光服务器虚拟化部署云空间 中专网络技术基础第一二章 网络安全蓝色背景图 网络技术试卷名词解释 软件开发邀标文件 数据库制作方法 数据库访问层固定的封装方法有 南开区应用软件开发服务技术规范 企业落实行业网络安全管理 软件开发外包定价方案 MQ属于数据库么 云服务器图片 县网络安全与信息服务中心 工控网络技术实训 软件开发人员 绩效考核 数据库实验报告表的创建与管理 移动软件开发发展情况 数据库中的二维表会考什么 手机网络安全承诺 嵌入式管理服务器 企业网络安全科技馆郑州 菏泽有没有软件开发学校 华为服务器和戴尔服务器哪个好 理解开源软件开发过程 数据库三级模式结构有哪些 武汉网络安全 地址 金山区一站式软件开发成本价 江北直销软件开发公司电话
0