【HIVE常见操作二】

本文介绍了Hive和SparkSQL的高级操作技巧,包括动态分区设置、表与库的所有者更改、交换分区等特性,并提供了具体的操作命令示例。

1.动态设置分区
set hive.exec.dynamic.partition=true;
set hive.exec.dynamic.partition.mode=nonstrict;

2.sparksql执行:有spark-sql和spark-shell两种形式
-2.1spark-shell执行格式
spark.sql("add jar ")
或者spark.addJar形式执行
例子:spark-shell --jars /home/bigdata/software/hive/ext-lib/suning-commons-udf.jar
-2.2一般建议使用spark-sql启动,然后直接执行sql语句,类似于hivesql执行

3.采用CTAS新建表时不会保留原始表的分区信息;
通过create table xxx like xxxx;会保留分区信息;

4.--union all 不去重; --union 去重

5.exchange partition
该语句允许将一个分区中的数据移动另一个拥有相同schema但没有那个分区的表中。两表结构完全一致,执行之后原表该分区无数据。
ALTER TABLEtable_name_1 EXCHANGE PARTITION (partition_spec) WITH TABLE table_name_2;

6.--非本地模式执行,即提交到集群上运行
set hive.exec.mode.local.auto=false;

7.replace columns(本质是先删除在创建)
alter table testc_zj_01 replace columns(empname String,empage int);

8.修改库owner
alter (database|schema) database_name set owner [user|role] user_or_role;
alter database xxx set owner ide;

9.修改表owner
alter table tablename set owner [user|role] user_or_role;
alter table tb1 set owner user user1;
alter table tb1 set owner role role1;
alter table xxx set owner user ide;

<think> 嗯,用户需要关于Hive常见数据操作的实验报告内容。根据用户提供的引用资料,我可以整理出Hive数据操作的核心内容。 用户引用的资料[2]和[4]特别关键,其中[2]提到了Hive实验的基本流程:启动Hadoop→初始化Metastore→进入Hive shell→执行各种数据操作。[4]则详细展示了数据加载的四种典型场景:加载本地文件到普通、加载HDFS文件到普通、覆盖写入分区数据、向分区加载数据并指定分区。 考虑设计实验报告结构时,准备包含这些必做内容:实验环境准备部分要说明Hadoop和Hive的启动流程,引用[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、付费专栏及课程。

余额充值