hive sql 基础知识(一)

  • hive是将SQL语言转换成MapReduce程序并提交到Yarn上运行,读取HDFS上数据进行处理
    sql query :类似于MySql数据库的SQL
    SQL on Hadoop:建立在Hadoop之上提供SQL方式分析数据的框架 (hive-Facebook开源的,presto-京东,spark sql)
    image.png
  • hive中表有内部表和外部表
  • 内部表和外部表区别
    1.内部表不吸烟指定数据存放目录,它默认在/user/hive/warehouse/db目录/表名目录
    2.而外部表的数据存放目录是可以任意指定的;
    3.内部表被删除时,表定义和表数据都会被删除
    4.外部表被删除时,表定义会被删除,但是表数据依旧保留
  • hive启动
    bin/hive --启动为 一个单机交互式程序
    启动为服务
    bin/hiveserver2 -- 服务启动在前台,但不接受任何操作
    然后查看hive服务是否启动成功:netstat-nltp | grep 10000 等待。。找是否有10000
    然后可以用客户端去连接hive 服务,进行sql 操作
    bin/beeline -u jdbc:hive2:// localhost:10000-n root
  • 内部表的创建
create table emp
(empo int,
ename string,
job string,
mgr int) row format delimited fields terminated by ',';

(因hive表里默认分隔符是制表符,如果上传的数据是以逗号分隔,需改变分隔符)
hive sql 不能单条修改数据 ,需要整体修改;

  • 外部表的创建
create external table emp
(empo int,
ename string,
job string,
mgr int) row format delimited fields terminated by ',';
  • 导入数据
    方式1:用hdfs命令put到表所在目录
    load data inpath '/input/emp.csv' into table emp;
    方式2:用hive语句导入
    load data local inpath '/root/abc/' into table t1
  • 删除库/表
drop table stu;
drop database mydb;       -- 删除没有表的空库
drop database mydb cascade;     -- 删除非空的库
  • 分区表
    分区表跟普通表区别于,分区表的数据可以按照某个标志的不同值,来存储在不同子文件夹中;
create table tf_log (ip string,url string)
partitioned by (dt string) -- 指定分区
row format delimited fields terminated by ',';
 -- 插入数据 对分区表导入数据,必须指定导入到哪个分区
load data local inpath '/root/hivedata/log.2019-12-02' 
into table tf_log partition(dt='2019-12-02')
-- 查询分区信息: show partitions tf_log;
-- 删除一个分区
alter table tf_log drop partition(dt='2109-12-01');
-- 添加分区
alter table tf_log add psrtition(dt='2019-07-14') location '/log14';
  • 插入数据
-- 插入数据
insert into table_1 select * from table_2;  -- 在table_1后追加数据
insert overwrite table_1 select * from table_2;  -- 先将table_1中数据清空,然后添加数据

-- 提取数据常用语句
select [distinct] select_expr_1, select_expr_2
from table_name
[where condition]   -- 筛选条件
[group by col_list [having condition]]  -- 分组、分组返回的条件
[order by col_list]  -- 排序
[limit num_1, num_2]   -- 返回数据的起始位置(num_1)以及返回数据的记录数(num_2)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Hive是构建在Hadoop HDFS上得一个数据仓库 数据仓库是一个面向主题的、集成的、不可更新的、随时间不变化...
    Sx_Ren阅读 998评论 0 9
  • 1. Hive基本介绍和基础: Facebook公司最早完成并开源了hive框架,可以将sql语句直接翻译成Map...
    奉先阅读 3,439评论 0 43
  • 什么是Hive 1)由facebook开源的,最初用于解决海量结构化的日志数据统计问题。 2)构建在Hadoop之...
    机灵鬼鬼阅读 1,841评论 0 1
  • hive简介 解释一:Hive是一个数据仓库基础工具在Hadoop中用来处理结构化数据。它架构在Hadoop之上,...
    卡卡xx阅读 6,522评论 0 4
  • 正念练习:无边无际的觉知 把一滴颜料滴入一大片湖中,湖不会受到任何影响。 当你的心拥有广阔的空间,它就不会受到飘过...
    悠悠然a阅读 112评论 0 2

友情链接更多精彩内容