Hive数据操作方法

DDL数据定义

//创建数据库
CREATE DATABASE [IF NOT EXISTS] database_name
[COMMENT database_comment]
[LOCATION hdfs_path]
[WITH DBPROPERTIES (property_name=property_value, ...)];
//显示数据库
hive> show databases like 'db_hive*';
//显示数据库详情
hive> desc database db_hive;
//切换数据库
hive (default)> use db_hive;

管理表(内部表)

      默认创建的表都是所谓的管理表,有时也被称为内部表。因为这种表,Hive会(或多或少地)控制着数据的生命周期。Hive默认情况下会将这些表的数据存储在由配置项hive.metastore.warehouse.dir(例如,/user/hive/warehouse)所定义的目录的子目录下。         当我们删除一个管理表时,Hive也会删除这个表中数据。管理表不适合和其他工具共享数据。

外部表

       因为表是外部表,所以Hive并非认为其完全拥有这份数据。删除该表并不会删除掉这份数据,不过描述表的元数据信息会被删除掉。

2)管理表和外部表的使用场景

      每天将收集到的网站日志定期流入HDFS文本文件。在外部表(原始日志表)的基础上做大量的统计分析,用到的中间表、结果表使用内部表存储,数据通过SELECT+INSERT进入内部表。 

//创建表
CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name 
[(col_name data_type [COMMENT col_comment], ...)] 
[COMMENT table_comment] 
[PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)] 
[CLUSTERED BY (col_name, col_name, ...) 
[SORTED BY (col_name [ASC|DESC], ...)] INTO num_buckets BUCKETS] 
[ROW FORMAT row_format] 
[STORED AS file_format] 
[LOCATION hdfs_path]
[TBLPROPERTIES (property_name=property_value, ...)]
[AS select_statement]
[LIKE table_name]


//查看创建的表
show tables;
//修改表
ALTER TABLE table_name RENAME TO new_table_name;

 实操案例

1.创建一张表

create table student(id int,name string)row format delimited fields terminated by '\t';

2.加载本地文件

load data local inpath '/opt/module/hive/datas/student.txt' into table student;

3.加载HDFS文件到hive中

dfs -put /opt/module/hive/datas/students.txt  /user/atguigu;

4.加载HDFS上数据,导入完成后去hdfs查看文件是否还存在

load data inpath '/user/student.txt' into table student;

dfs -put /opt/module/hive/datas/student.txt  /user;

5.加载数据覆盖表中已有的数据

load data inpath ‘user/student.txt’ overwrite into table student;

创建一张表

create table student2(id int, name string) row format delimited fields terminated by '\t';

DML数据修改

基本模式插入数据

insert into table student2 values (1,'wangwu'),(2,'zhaoliu');

根据查询结果插入数据

insert overwrite table student2

select id , name from student where id<1006; 

Import 数据到指定Hive表中

import table student2 from '/user/hive/warehouse/export/student';

Insert导出 将hive中的数据导出

(本地)insert overwrite local directory ‘/opt/module/hive/datas/export/student’ select * from student;

(HDFS) insert overwrite directory ‘/user/student’ ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' select * from student; 

EXPORT导出到HDFS上

export table default.student to '/user/hive/warehouse/export/student';

### 回答1: Hive 是一个基于 Hadoop数据仓库工具,可以用于存储、管理和分析大规模数据集。Hive 提供了 SQL-like 的查询语言 HiveQL,可以方便地对存储在 Hadoop 中的数据进行查询和分析。下面是一些常用的 Hive 数据清洗方法: 1. 数据去重:使用 DISTINCT 关键字对数据进行去重。 2. 数据过滤:使用 WHERE 子句对数据进行过滤,例如:WHERE column_name='value'。 3. 数据填充:使用 IFNULL 函数或 CASE 表达式对空值进行填充,例如:IFNULL(column_name, 'default_value')。 4. 数据转换:使用 CAST 函数对数据类型进行转换,例如:CAST(column_name AS int)。 5. 数据拆分:使用 SUBSTR 函数对字符串进行拆分,例如:SUBSTR(column_name, start_index, length)。 6. 数据合并:使用 CONCAT 函数对字符串进行合并,例如:CONCAT(column_name1, column_name2)。 7. 数据聚合:使用 GROUP BY 子句对数据进行聚合,并使用 AVG、SUM、MAX、MIN 等函数进行计算,例如:SELECT column_name, AVG(column_name2) FROM table_name GROUP BY column_name。 8. 数据排序:使用 ORDER BY 子句对数据进行排序,例如:SELECT column_name FROM table_name ORDER BY column_name ASC。 9. 数据抽样:使用 TABLESAMPLE 子句对数据进行抽样,例如:SELECT column_name FROM table_name TABLESAMPLE(10 PERCENT)。 以上是一些常用的 Hive 数据清洗方法,可以根据具体需求进行选择和组合使用。 ### 回答2: Hive数据清洗是指通过Hive语句和函数对数据进行处理和过滤,以得到符合要求的数据。具体方法如下: 1. 选择合适的列: 首先,根据需求选择需要进行数据清洗的列。可以使用Hive的SELECT语句查询表中所有列,并根据需求筛选出需要清洗的列。 2. 过滤无效数据: 如果数据中存在无效或错误的记录,可以使用Hive的WHERE语句进行过滤。根据数据的特点,使用相应的逻辑操作符(如“=”、“!=”、“>”、“<”等)进行条件筛选,排除无效的记录。 3. 处理缺失值: 如果数据中存在缺失值,可以使用Hive的COALESCE函数或IFNULL函数将缺失值替换为指定的默认值。 4. 去除重复记录: 如果数据中存在重复记录,可以使用Hive的DISTINCT关键字去除重复记录。 5. 数据类型转换: 如果数据中的某些列的数据类型与要求不符,可以使用Hive的CAST函数将数据转换为目标数据类型。 6. 数据格式化: 如果数据中的某些列的数据格式不符合要求,可以使用Hive的正则表达式函数(如REGEXP_EXTRACT、REGEXP_REPLACE等)进行数据格式化。 7. 数据标准化: 如果数据中包含不规范的文本(如大小写混合、拼写错误等),可以使用Hive的字符串函数(如LOWER、UPPER、TRIM等)对文本进行标准化操作。 8. 处理异常值: 如果数据中存在异常值,可以使用Hive的CASE WHEN语句对异常值进行处理,即根据条件将异常值替换为正确的值。 综上所述,Hive数据清洗的具体方法包括选择合适的列、过滤无效数据、处理缺失值、去除重复记录、数据类型转换、数据格式化、数据标准化和处理异常值等操作。通过运用Hive的相关语句和函数,可以有效地清洗数据,得到符合要求的数据集。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值