hadoop学习笔记--12.hive DML操作

本文详细介绍了Hive中的数据操纵语言(DML)基本操作,包括数据的加载与插入、导出、删除及更新等,并对Hive查询功能进行了深入解析,涵盖分组、排序、连接等多种查询技巧。

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

一、hive DML的基本操作


建议直接参考官方文档:
https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL
1.加载与插入数据

LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=val1, partcol2=val2 ...)]
INSERT INTO TABLE tablename [PARTITION (partcol1[=val1], partcol2[=val2] ...)] VALUES values_row [, values_row ...]

Where values_row is:
( value [, value ...] )


常见的有以下几个方式:
  1) 加载本地文件到hive表(LOCAL)
    例:load DATA LOCAL INPATH‘/data/user.txt’ INTO table user partition (month =’201707’ ,day=’13’);
  2) 加载hdfs文件到hive中
   例:load DATA INPATH‘/data/user.txt’INTO table user   partition (month =’201707’ ,day=’13’);
  3) 加载数据覆盖表中已有的数据
   例:load data inpath ‘/user/liu/hive/datas/emp.txt’ overwrite into table emp ;
  4) 创建表是通过insert加载别的表已有的数据
    create table emp_ci like emp ;
    insert into table emp_ci select * from emp ;
  5) 创建表的时候通过location指定加载
  6) Import
    create table db_hive.emp like default.emp ;
    import table db_hive.emp from ‘/user/beifeng/hive/export/emp_exp’;
    

2.导出数据
  1. insert [overwrite] [local] directory ‘导出的文件地址’ select * from table_name;
  2. 指定导出的行列格式。
    insert [overwrite] [local] directory ‘文件地址’
ROW FORMAT DELIMITED FIELDS TERMINATED BY ‘\t’ COLLECTION ITEMS TERMINATED BY ‘\n’ select * from table_name ;
  3. 查询结果重定向。
    bin/hive -e “select * from emp ;” > /opt/datas/exp_res.txt
  4. export。
    EXPORT TABLE default.emp TO ‘/user/beifeng/hive/export/emp_exp’ ;(HDFS上的目录)
  5. sqoop。


3.删除数据

DELETE FROM tablename [WHERE expression]


4.更新数据

UPDATE tablename SET column = value [, column = value ...] [WHERE expression]


注:hive主要是分析数据的,所以一般不会对数据进行删除或更新。

二、hive 查询


1.hive的分组
  group by
    对查询的数据根据表的某列进行分组。可以配合having一起使用。
     官方参考文档:
https://cwiki.apache.org/confluence/display/Hive/LanguageManual+GroupBy
    特别注意:select要选择的字段必须为聚合函数或者在group by后面出现过。
  
2.hive的排序方式
  order by :对全局数据的一个排序,仅仅只有1个reduce
  sort by :对每一个reduce内部数据进行排序的,全局结果集来说不是排序
  distribute by:类似于MapReduce中分区partition,对数据进行分区,结合sort by进行使用使reduce负载均衡。
    注意:distribute by 必须要在sort by 前面。
   cluster by :当distribute by和sort by 字段相同时,可以使用cluster by ;
  官方参考文档:
https://cwiki.apache.org/confluence/display/Hive/LanguageManual+SortBy

3.hive的Distinct

这里写图片描述

4.hive的聚合函数
  Hive内部提供了很多函数给开发者使用,包括数学函数,类型转换函数,条件函数,字符函数,聚合函数,表生成函数等等,这些函数都统称为内置函数。
参考本文:http://www.cnblogs.com/MOBIN/p/5618747.html
本文将函数所有的聚合函数都一一说明了。

5.join
  hive连接有很多种形式。分为内连接,左外连接,右外连接,全外连接和半连接。通常会在两个表进行联合分析使用。
本文在这不多做介绍,其实这几种连接方式不同体现在以哪张表为主表而已。举个例子,当A学生表与B课程表联合分析时,A和B都有一列是学生的学号ID。假设A表在前以左外连接的方式联合B表,则返回结果的表以A表为主,A表的关联不上的数据则返回NULL。
可以参考:http://lxw1234.com/archives/2015/06/315.htm

[root@hadoop01 ~]# ps -ef | grep HiveServer2 | grep -v grep root 15604 11956 6 22:32 pts/1 00:00:58 /export/servers/jdk1.8.0_161/bin/java -Dproc_jar -Dorg.slf4j.simpleLogger.defaultLogLevel=info -Dproc_hiveserver2 -Dlog4j2.formatMsgNoLookups=true -Dlog4j.configurationFile=hive-log4j2.properties -Djava.util.logging.config.file=/export/servers/apache-hive-3.1.3-bin/conf/parquet-logging.properties -Dyarn.log.dir=/export/servers/hadoop-3.3.5/logs -Dyarn.log.file=hadoop.log -Dyarn.home.dir=/export/servers/hadoop-3.3.5 -Dyarn.root.logger=INFO,console -Djava.library.path=/export/servers/hadoop-3.3.5/lib/native -Xmx256m -Dhadoop.log.dir=/export/servers/hadoop-3.3.5/logs -Dhadoop.log.file=hadoop.log -Dhadoop.home.dir=/export/servers/hadoop-3.3.5 -Dhadoop.id.str=root -Dhadoop.root.logger=INFO,console -Dhadoop.policy.file=hadoop-policy.xml -Dhadoop.security.logger=INFO,NullAppender org.apache.hadoop.util.RunJar /export/servers/apache-hive-3.1.3-bin/lib/hive-service-3.1.3.jar org.apache.hive.service.server.HiveServer2 root 15828 10065 2 22:35 pts/0 00:00:15 /export/servers/jdk1.8.0_161/bin/java -Dproc_jar -Dorg.slf4j.simpleLogger.defaultLogLevel=info -Dproc_hiveserver2 -Dlog4j2.formatMsgNoLookups=true -Dlog4j.configurationFile=hive-log4j2.properties -Djava.util.logging.config.file=/export/servers/apache-hive-3.1.3-bin/conf/parquet-logging.properties -Dyarn.log.dir=/export/servers/hadoop-3.3.5/logs -Dyarn.log.file=hadoop.log -Dyarn.home.dir=/export/servers/hadoop-3.3.5 -Dyarn.root.logger=INFO,console -Djava.library.path=/export/servers/hadoop-3.3.5/lib/native -Xmx256m -Dhadoop.log.dir=/export/servers/hadoop-3.3.5/logs -Dhadoop.log.file=hadoop.log -Dhadoop.home.dir=/export/servers/hadoop-3.3.5 -Dhadoop.id.str=root -Dhadoop.root.logger=INFO,console -Dhadoop.policy.file=hadoop-policy.xml -Dhadoop.security.logger=INFO,NullAppender org.apache.hadoop.util.RunJar /export/servers/apache-hive-3.1.3-bin/lib/hive-service-3.1.3.jar org.apache.hive.service.server.HiveServer2 root 16374 11956 14 22:41 pts/1 00:00:59 /export/servers/jdk1.8.0_161/bin/java -Dproc_jar -Dorg.slf4j.simpleLogger.defaultLogLevel=info -Dproc_hiveserver2 -Dlog4j2.formatMsgNoLookups=true -Dlog4j.configurationFile=hive-log4j2.properties -Djava.util.logging.config.file=/export/servers/apache-hive-3.1.3-bin/conf/parquet-logging.properties -Djline.terminal=jline.UnsupportedTerminal -Dyarn.log.dir=/export/servers/hadoop-3.3.5/logs -Dyarn.log.file=hadoop.log -Dyarn.home.dir=/export/servers/hadoop-3.3.5 -Dyarn.root.logger=INFO,console -Djava.library.path=/export/servers/hadoop-3.3.5/lib/native -Xmx256m -Dhadoop.log.dir=/export/servers/hadoop-3.3.5/logs -Dhadoop.log.file=hadoop.log -Dhadoop.home.dir=/export/servers/hadoop-3.3.5 -Dhadoop.id.str=root -Dhadoop.root.logger=INFO,console -Dhadoop.policy.file=hadoop-policy.xml -Dhadoop.security.logger=INFO,NullAppender org.apache.hadoop.util.RunJar /export/servers/apache-hive-3.1.3-bin/lib/hive-service-3.1.3.jar org.apache.hive.service.server.HiveServer2 [root@hadoop01 ~]# [root@hadoop01 ~]# # 检查端口监听状态 (10000/10001) [root@hadoop01 ~]# sudo netstat -tulnp | grep -E '10000|10001' tcp6 0 0 :::10001 :::* LISTEN 16374/java [root@hadoop01 ~]#
最新发布
06-18
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值