hive数据的普通查询

本文详细介绍了Hive数据查询,包括select...from语句的各种用法,如查询所有、指定字段、列别名、算术表达式和常用函数。还涉及了where语句的比较和逻辑运算符,以及Group By、Having语句在分组统计中的作用。此外,还讨论了Order By的全局排序和内排序,以及CASE关键字在条件分支中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据的查询

加载部门数据

在这里插入图片描述

部门表,第一字段代表部门编号,第二个字段代表部门名称,第三个字段代表部门人数。

create table table_4_dept_select(
 deptNo int,
 deptName String,
 deptCount int
)
row format delimited 
fields terminated by '\t'
lines terminated by '\n';

加载数据

load data local inpath '/opt/data/hive/hive_4_dept.txt' into table table_4_dept_select;

加载员工数据

在这里插入图片描述

员工数据

字段分别为 员工ID,员工姓名,职业名称,部门代码,出生日期,工资,工作天数,性别,家庭地址,联系方式,技能。

create table table_4_people_select(
 empNo int,
 empName String,
 empNickName String,
 empDepCode int,
 empBirth String,
 empWages double,
 empWorkDay int,
 empGender int,
 empAddress struct<prov:string,cite:string,area:string>,
 empContact map<string,string>,
 empSkilled array<string>
)
row format delimited 
fields terminated by ','
collection items terminated by '-'
map keys terminated by ':'
lines terminated by '\n';

加载数据

load data local inpath '/opt/data/hive_4_emp.csv' into table table_4_people_select;

1 select … from语句

1.查询所有
select * from table_name;
 # 查询所有员工的所有信息
select * from table_4_people_select;
2.查询指定的字段

查询基本数据类型的字段

select 字段名,字段名,... from table_name;
#查询所有员工的名字,职业
select empName,empNickName from table_4_people_select;

查询array类型的的字段

select 字段名[index] from table_name;
#查询所有员工的所有爱好,第一项爱好,第五项爱好
select empSkilled, empSkilled[0] ,empSkilled[4]from table_4_people_select;

字段是数组的名字,则显示数组中所有的值,

如果想显示array中的第几个元素,则加上下标,如果没有值显示null。

查询map类型的字段

select  字段[k] from table_name;
#查询对应map字段的所有值,查询指定map的key的值
select empContact, empContact['tel'] ,empContact['qq']from table_4_people_select;

查询struct类型的字段

select  字段.key  from table_name;
#查询struct字段内所有的值,查询struct中某个属性的值
select empAddress, empAddress.prov ,empAddress.cite from table_4_people_select
### 将普通文本数据导入 Hive 数据仓库的方法 将普通文本数据导入 Hive 数据仓库可以通过多种方式实现,其中最常见的方式是通过 `LOAD DATA` 命令直接加载本地文件到 Hive 表中。以下是关于此操作的具体描述: #### 使用 LOAD DATA 导入数据 可以利用 Hive 提供的 `LOAD DATA` 命令来完成这一过程。该命令支持从 HDFS 或者本地文件系统中读取数据并将其写入指定的 Hive 表中[^1]。 ```sql LOAD DATA LOCAL INPATH '/path/to/local/file.txt' OVERWRITE INTO TABLE your_table_name; ``` - **LOCAL**: 如果省略,则表示从 HDFS 中加载;如果加上 `LOCAL` 关键字,则是从本地文件系统加载。 - **INPATH**: 指定要加载的数据所在的路径。 - **OVERWRITE**: 可选参数,用于覆盖目标表中的现有数据。如果不加这个关键字,默认会追加数据而不是替换已有数据。 需要注意的是,在执行上述 SQL 语句之前,应该已经创建好对应的 Hive 表,并确保其字段定义与输入文件的内容相匹配[^1]。 另外一种方法涉及 ETL 流程的应用。由于数据仓库通常依赖于复杂的 ETL 过程来进行数据处理和管理,因此对于大规模或者复杂场景下的数据迁移来说,构建合理的 ETL 管道显得尤为重要[^2]。 最后还有一种基于 Export 和 Import 的方案可供选择。尽管这种方法在实际项目里可能不如前两者那么常用,但它仍然提供了一种可行的选择特别是当涉及到跨环境间传输时[^3]。 综上所述,针对简单需求可以直接采用 `LOAD DATA` 方式快速高效地把外部文本资料引入至内部存储结构之中即 Hive 表内;而对于更高级别的应用场景则需考虑结合完整的 ETL 解决方案以满足业务上的灵活性和技术层面的要求。 ```sql -- 创建示例表 CREATE TABLE IF NOT EXISTS employees ( id INT, name STRING, salary FLOAT ) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'; -- 加载本地文件到 Hive 表 LOAD DATA LOCAL INPATH '/Users/example/employees.txt' INTO TABLE employees; ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值