03--hive交互命令和常见数据类型

Hive命令详解与数据类型转换
本文介绍了Hive的交互命令,包括使用`-e`和`-f`选项执行SQL语句,以及如何退出命令行操作。此外,详细讨论了Hive中的数据类型,如集合数据类型,并解析了Hive的隐式类型转换规则,特别是转换规则和使用CAST进行显式转换的示例。

bin/hive -help

[root@hadoop33 hive]# hive -help
usage: hive
 -d,--define <key=value>          Variable subsitution to apply to hive
                                  commands. e.g. -d A=B or --define A=B
    --database <databasename>     Specify the database to use
 -e <quoted-query-string>         SQL from command line
 -f <filename>                    SQL from files
 -H,--help                        Print help information
    --hiveconf <property=value>   Use value for given property
    --hivevar <key=value>         Variable subsitution to apply to hive
                                  commands. e.g. --hivevar A=B
 -i <filename>                    Initialization SQL file
 -S,--silent                      Silent mode in interactive shell
 -v,--verbose                     Verbose mode (echo executed SQL to the
                                  console)

</

<think> 嗯,用户需要关于Hive常见数据操作的实验报告内容。根据用户提供的引用资料,我可以整理出Hive数据操作的核心内容。 用户引用的资料[2][4]特别关键,其中[2]提到了Hive实验的基本流程:启动Hadoop→初始化Metastore→进入Hive shell→执行各种数据操作。[4]则详细展示了数据加载的四种典型场景:加载本地文件到普通表、加载HDFS文件到普通表、覆盖写入分区表数据、向分区表加载数据并指定分区。 考虑设计实验报告结构时,准备包含这些必做内容:实验环境准备部分要说明HadoopHive的启动流程,引用[3]提到的hive.metastore.warehouse.dir配置可以解释默认存储路径。数据加载操作将重点演示四种load命令的差异,特别是带partition的案例需要强调分区目录自动创建的特性。查询部分计划补充基础select语法,虽然引用中未提及但实验报告通常需要包含。 注意到用户可能需要验证分区加载效果,所以准备在注意事项中加入检查HDFS目录的命令示例,比如hadoop fs -ls /user/hive/warehouse/t_load_part/time=2020-12-12。对于实验问题设计,考虑围绕load命令特性展开,比如询问覆盖写入与追加写入的区别,或者分区表加载时目录命名规则。 最后会在相关推荐环节关联到其他Hive操作,比如用户可能感兴趣的insert导出数据或动态分区装载,这些虽然不在当前引用里,但属于常见实验的延伸内容。 </think>基于引用内容,以下是Hive常见数据操作的实验报告框架及核心操作详解: --- ### **Hive数据操作实验报告** **实验目标**:掌握Hive表数据加载、查询与管理操作。 **环境准备**: 1. 启动Hadoop集群:`start-all.sh` 2. 初始化Metastore:`schematool -dbType mysql -initSchema` [^2] 3. 启动Hive:`hive` 进入交互环境 [^2] --- ### **一、数据加载操作** #### 1. **加载本地文件到普通表** ```sql -- 创建表(引用[1]) CREATE TABLE emp ( empno INT, ename STRING, job STRING, mgr INT, hiredate STRING, sal DOUBLE, comm DOUBLE, deptno INT ) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'; -- 加载本地数据(引用[4]) LOAD DATA LOCAL INPATH '/home/hadoop/data/emp.txt' INTO TABLE emp; ``` #### 2. **加载HDFS文件到表** ```sql LOAD DATA INPATH '/hdfs_path/emp_data.txt' INTO TABLE emp; -- 文件从HDFS移动至Hive仓库目录 [^4] ``` #### 3. **覆盖写入数据** ```sql LOAD DATA LOCAL INPATH '/new_data.txt' OVERWRITE INTO TABLE emp; -- 清空旧数据后写入 [^4] ``` #### 4. **向分区表加载数据** ```sql -- 创建分区表(引用[4]) CREATE TABLE emp_partitioned ( empno INT, ename STRING ) PARTITIONED BY (dept STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY ','; -- 按分区加载数据 LOAD DATA LOCAL INPATH '/data/dept_10.csv' OVERWRITE INTO TABLE emp_partitioned PARTITION (dept='HR'); ``` > **分区目录**:数据存储在HDFS路径 `/user/hive/warehouse/emp_partitioned/dept=HR/` [^3] --- ### **二、数据查询与管理** #### 1. 基础查询 ```sql SELECT * FROM emp WHERE sal > 3000; -- 条件过滤 SELECT dept, COUNT(*) FROM emp_partitioned GROUP BY dept; -- 聚合统计 ``` #### 2. 查看表结构 ```sql DESCRIBE FORMATTED emp; -- 显示表详细属性(含HDFS路径) ``` #### 3. 验证数据存储位置 ```bash # 在HDFS查看表目录(引用[3]) hadoop fs -ls /user/hive/warehouse/emp ``` --- ### **三、实验结果分析** | **操作类型** | **关键命令** | **存储位置变化** | |---------------------|----------------------------------------|------------------------------------------| | 加载本地文件 | `LOAD DATA LOCAL INPATH ...` | 数据复制到Hive仓库目录 | | 加载HDFS文件 | `LOAD DATA INPATH ...` | 文件从原路径**移动**至Hive仓库目录 | | 分区表加载 | `PARTITION (分区字段='值')` | 自动创建分区目录(如 `dept=HR`) | --- ### **注意事项** 1. **路径权限**:确保Hive对HDFS路径有读写权限。 2. **数据覆盖**:`OVERWRITE` 会清空表中**全部**现有数据。 3. **分区加载**:加载分区表时需显式指定分区值,否则需通过 `ALTER TABLE` 修复分区。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值