hive------select语法介绍

例子:班级表classes.txt,学生表students.txt,两个表文件数据如下:

classes:

1,班级1
2,班级2
3,班级3

student:

11,1,张三
12,1,李四
13,1,王五
21,2,Tom
22,2,Gerry
23,2,Simon
24,2,Jim
91,\N,Jeffrey
92,\N,Leo
93,\N,even
94,\N,aaron
95,\N,addison

查询实例:

一、from语法:
1.正常from:
select * from students;
2.from语句提前
from students select *;
二、cte语法:
1. 获取班级号为1的学生信息:
with tmp as (select studentid as sid,classid as cid,studentname as name from students where classid=1) from tmp select *;
2. 获取总学生数、已经分配班级的学生数、未分配班级的学生数(作业1)。
分析:
总学生数:studentid的总数
分配班级的学生数:classid不为空的学生总数
未分配的学生数: classid为空的学生数
结果: 12 7 5
三、where & group by语法实例:
1. 获取学生数大于3的班级id
from students select classid where classid is not null group by classid having count(studentid) > 3;
四、order by、sort by排序语法:
1. 使用order by根据学生id倒序。
select * from students order by studentid desc;
2. 设置hive.mapred.mode为strict,然后在进行order by操作。
set hive.mapred.mode=strict;
select * from students order by studentid desc; 会出现异常
select * from students order by studentid desc limit 5;
3. 使用sort by根据学生id排序。
select * from students sort by studentid desc;
4. 设置mapreduce.job.reduces个数为两个,然后再使用sort by进行排序。(说明sort by是根据reduce个数进行局部排序的)
set mapreduce.job.reduces=2;
select * from students sort by studentid desc;

### Hive `-e` 参数的用法 Hive 提供了一个命令行工具,允许用户通过 `hive -e` 执行单条 SQL 查询或者一系列查询语句。此参数主要用于运行简单的 HiveQL 脚本或命令。 #### 语法 ```bash hive -e "SQL_QUERY" ``` 其中 `"SQL_QUERY"` 是要执行的具体 HiveQL 语句。如果需要执行多个查询,则可以将它们连接在一起并用分号 (`;`) 隔开[^1]。 #### 示例 以下是几个常见的使用场景: 1. **执行简单查询** 如果只想查看某个表的内容,可以直接写一条 SELECT 语句: ```bash hive -e "SELECT * FROM employees LIMIT 10;" ``` 2. **创建表并加载数据** 可以一次性完成建表和加载数据的操作: ```bash hive -e " CREATE TABLE IF NOT EXISTS employee ( id INT, name STRING, salary DOUBLE ); LOAD DATA INPATH '/data/employee.txt' INTO TABLE employee; " ``` 3. **处理特殊字符** 当 SQL 中包含单引号时,需注意转义问题。例如插入含有单引号的数据时,可采用 PostgreSQL 类似的解决办法[^2]: ```bash hive -e "INSERT INTO table_name VALUES ('<html><script>let a=''a''</script></html>');" ``` 或者使用反斜杠进行转义: ```bash hive -e "INSERT INTO table_name VALUES ('<html><script>let a=\\'a\\'</script></html>');" ``` 4. **导出查询结果到文件** 结合重定向功能,可以将查询结果保存至本地文件: ```bash hive -e "SELECT * FROM sales;" > output.csv ``` 5. **调优配置** 在某些情况下可能需要调整 MapReduce 的行为,比如设置 Reduce 数量来优化性能。可以通过 `SET` 命令实现这一点: ```bash hive -e " SET mapred.reduce.tasks=-1; SELECT COUNT(*) FROM large_table WHERE condition='value'; " ``` ### 注意事项 - 若涉及复杂逻辑建议编写独立 `.hql` 文件并通过 `-f` 参数提交。 - 对于大规模作业应考虑资源分配合理性和集群负载情况[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值