【博学谷学习记录】超强总结,用心分享|狂野大数据课程【Hive框架二】的总结分析

Hive的交互方式

  • 方式1

    hive   #个人测试
    
  • 方式2(生产环境)

    hive -e "show databases;"  #直接执行HiveSQL命令
    
    
    hive -f  test1.sql    #直接执行HiveSQL脚本 (生产环境)
    
  • 方式3-beeline

    1、beenline是Hive的第二代客户端    #个人测试
    2、操作方式
    [root@node3 ~]# beeline
    
    beeline> !connect jdbc:hive2://node3:10000
    Connecting to jdbc:hive2://node3:10000
    Enter username for jdbc:hive2://node3:10000: root
    Enter password for jdbc:hive2://node3:10000:123456
    
    3、我们可以使用expect脚本来实现一键进入beenline
    

Hive的基础操作

Hive的数据库操作

  • 概念
1、当我们在hive中创建一个数据库,则Hive默认会自动会在/user/hive/warehouse/目录下创建一个数据库目录
  create database if not exists  myhive; #/user/hive/warehouse/myhive.db
2、当我们在Hive中创建一个数据库,则Hive会在MySQL中记录一条元数据
  • 操作
-- 1、创建数据库
create database if not exists  myhive;

-- 2、创建数据库并手动指定数据库存放目录
create database if not exists  myhive2 location '/myhive2'

--3、查看数据库的元数据信息
desc database myhive;


--4、删除数据库
drop database mytest;            -- 只能删除空数据库
drop database myhive2 cascade ;  -- 可以删除任何数据库(强删)

Hive的表操作

Hive的数据类型
Hive中常见的数据类型有三种:string、int/tinyint 、 double/decimal(10,2)
(重点)Hive表操作1-内部表和外部表
  • 前置内容

    1、Hive表文件默认的分隔符是'\001'
    2、Hive默认不允许对数据进行删除和修改,不支持update和delete
    delete  from stu where id = 2;             #报错  
    update stu set name = 'ls2' where id = 2;   #报错
    
    truncate table stu;  #不会报错,支持
    
    
    3、Hive中创建表,自动在HDFS的数据库目录创建对应的表目录(如果加了location关键字则除外),默认表目录的名字和表名一样
    
  • 内部表

    1、内部表是私有表,一旦给表加载数据之后,内部表认为这份数据就是他独占的,表一旦删除,表数据文件会跟着全部删除,如果在应用中,数据是部门内部的,或者个人的,则表可以设置为内部表,不会对其他人造成影响。
    2、外部表创建语法: create  table 表
    
    use myhive;
    -- 1、创建内部表-使用默认分隔符:'\001'
    create table stu(id int, name string);
    -- 加载数据
    insert into stu values (1,'zs');
    insert into stu values (2,'ls');
    select * from stu;
    
    -- 2、创建内部表-使用指定分隔符: ','
    
    create table stu2(id int, name string)
    row format delimited fields terminated by ',';
    insert into stu2 values (1,'zs');
    insert into stu2 values (2,'ls');
    
    -- 开启本地模式
    set hive.stats.column.autogather=false;
    set hive.exec.mode.local.auto=true;  --开启本地mr
    
    
    -- 3、通过复制表结构来建表
    create table stu3 as select * from stu2;  -- 即复制表结构,又复制数据
    create table stu4 like stu2;   -- 仅复制表结构
    
    -- 4、查看表的元数据信息
     desc   stu2;          -- 查看字段信息(简单)
     desc formatted stu2;  -- 查看详细的元数据信息
    
    
    -- 5、删除表
    -- 内部表删除,将表数据和元数据全部删除
    drop table stu2;
    select * from stu;
    
    -- 6、给表加载数据(最正式的) - 本地 -复制
    
    create table stux(id int, name string)
    row format delimited fields terminated by '\t';
    
    
    -- 从本地加载--复制
    load data local inpath '/export/data/hivedatas/1.txt' into table stux;
    select * from stux;
    
    
    -- 6、给表加载数据(最正式的) - HDFS - 剪切
    create table stuy(id int, name string)
    row format delimited fields terminated by '\t';
    
    load data  inpath '/input/hivedatas/1.txt' into table stuy;
    
    select * from stuy;
    
    
  • 外部表

    1、外部表是公有表,一旦给表加载数据之后,外部表认为这份数据大家的,表一旦删除,表数据文件不会删除,只删除表和文件之间的映射关系,如果在应用中,数据是各部门共享,则可以设置为外部表,你的表只是对文件有访问权。
    2、外部表创建语法: create external table 表...
    
    -- 1、创建外部表
    create external table teacher
    (
        tid   string,
        tname string
    ) row format delimited fields terminated by '\t';
    
    create external table student
    (
        sid    string,
        sname  string,
        sbirth string,
        ssex   string
    ) row format delimited fields terminated by '\t';
    
    -- 加载数据
    load data local inpath '/export/data/hivedatas/student.txt' into table student;
    load data local inpath '/export/data/hivedatas/teacher.txt' into table teacher;
    
    select * from student;
    select * from teacher;
    
    
    -- 删除表,只删除元数据,不会删除表数据
    drop table teacher;
    

    多个外部表共享数据

在这里插入图片描述

-- 模拟多张表共享一份数据
drop table covid1;
create external  table covid1(
    date_val string,
    country  string,
    state    string,
    code     string,
    cases    int,
    deaths   int
)
row format delimited fields terminated by ','
location '/input/covid';
select * from covid1;


create external  table covid2(
    date_val string,
    country  string,
    state    string,
    code     string,
    cases    int,
    deaths   int
)
row format delimited fields terminated by ','
location '/input/covid';
select * from covid2;

-- 删除covid1
drop table covid1;
select * from covid2;

-- 删除covid2
drop table covid2;
select * from covid2;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!对于大数据项目,Spark和Hive是非常常用的工具。Spark是一个快速、通用的大数据处理引擎,它提供了丰富的API和内置库,支持在大规模数据集上进行高性能的分布式计算。Hive是一个建立在Hadoop之上的数据仓库工具,它提供了类似于SQL的查询语言HQL,可以方便地对存储在Hadoop集群上的数据进行查询和分析。 在一个大数据项目中,通常会使用Spark进行数据处理和计算,而Hive则用于数据的存储和查询。下面是一个基本的大数据项目流程: 1. 数据采集:从各种数据源(如传感器、日志、数据库等)收集原始数据,并进行清洗和预处理。 2. 数据存储:将处理后的数据存储到合适的存储系统中,如Hadoop分布式文件系统(HDFS)或云存储服务。 3. 数据处理:使用Spark进行数据处理和计算,可以使用Spark的DataFrame和SQL API对数据进行转换、过滤、聚合等操作。 4. 数据分析:使用Hive进行数据的查询和分析,可以通过HQL语言编写复杂的查询,从存储在Hadoop上的数据中提取有用信息。 5. 数据可视化:将分析结果可视化展示,可以使用图表、仪表板等方式呈现数据分析结果,帮助用户理解和决策。 这只是一个简单的大数据项目流程示例,实际项目中可能还涉及到数据清洗、特征工程、机器学习等其他环节。希望能对您有所帮助!如果您有更具体的问题,欢迎提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值