IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> hive知识栈 -> 正文阅读

[大数据]hive知识栈

  • hive运行流程?

  • hive数据模型

    • ?

    • 数据类型

      • ?数据类型

        TINYINT

        1-byte signed integer

        from -128 to 127

        SMALLINT

        2-byte signed integer

        from -32,768 to 32,767

        INT

        INTEGER

        4-byte signed integer

        from -2,147,483,648 to 2,147,483,647

        BIGINT

        8-byte signed integer

        from -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807

        FLOAT

        4-byte single precision floating point number

        DOUBLE

        8-byte double precision floating point number

        PRECISION?

        DECIMAL

        Decimal datatype was introduced in Hive0.11.0

        (HIVE-2693) and revised in Hive 0.13.0 (HIVE-3976)

      • 日期类型
        • TIMESTAMP

          UNIX时间戳和可选的纳秒精度

          DATE

          描述特定的年/月/日,格式为YYYY-MM-DD

      • 字符串
        • string

          最常用的字符串格式,等同于java String

          varchar

          变长字符串,hive用的较多,最长为65535

          char

          定长字符串,比varchar更多一些,一般不要超过255个字符

      • 布尔类型
        • 类型

          说明

          boolean

          等同于java的boolean用的很少

      • 复杂数据
        • STRUCT

          和C语言中的struct或者对象类似,都可以通过符号访问元素内容。例如,如果某个列的数据类型是STRUCT{first STRING, lastdt?STRING},那么第1个元素可以通过字段名.first来引用

          struct(

          ‘John’,

          ‘Doe’)

          MAP

          MAP是一组键-值对元组集合,使用数组表示法(例如[‘key’])可以访问元素。例如,如果某个列的数据类型是MAP,其中键->值对是’first’->’John’和’last’->’Doe’,那么可以通过字段名[‘last’]获取值’Doe’

          map(‘first’, ‘John’,

          ‘last’,

          ‘Doe’)

          ARRAY

          数组是一组具有相同类型的变量的集合。这些变量称为数组的元素,每个数组元素都有一个编号,编号从零开始。例如,数组值为[‘John’, ‘Doe’],那么第1个元素可以通过数组名[0]进行引用

          ARRAY(

          ‘John’,

          ‘Doe’)

      • hive文件格式
        • 面向行/列类型

          类型名称

          是否可切割计算

          优点

          缺点

          适用场景

          面向行

          文本文件格式(.txt)

          可以

          查看、编辑简单

          无压缩占空间大、传输压力大、数据解析开销大

          学习练习使用

          面向行

          SequenceFile序列文件格式(.seq)

          可以

          自支持、二进制kv存储、支持行和块压缩

          本地查看不方便:小文件合并成kv结构后不易查看内部数据

          生产环境使用、map输出的默认文件格式

          面向列

          rcfile文件格式(.rc)

          可以

          数据加载快、查询快、空间利用率高、高负载能力

          每一项都不是最高

          学习、生产均可

          面向列

          orcfile文件格式(.orc)

          可以

          兼具rcfile优点、进一步提高了读取、存储效率、新数据类型的支持

          每一项都不是最高

          学习、生产均可

      • 压缩格式
        • 可切分性

          类型名称

          是否原生支持

          优点

          缺点

          适用场景

          可切分

          lzo(.lzo)

          压缩/解压速度快

          合理的压缩率

          压缩率比gzip低

          不原生、需要native安装

          单个文件越大,lzo优点越越明显。压缩完成后>=200M为宜

          可切分

          bzip2(.bz2)

          高压缩率超过gzip

          原生支持、不需要native安装、用linux bzip可解压操作

          压缩/解压速率慢

          处理速度要求不高、要求高压缩率(冷数据处理经常使用)

          不可切分

          gzip(.gz)

          压缩/解压速度快

          原生/native都支持使用方便

          不可切分、对CPU要求较高

          压缩完成后<=130M的文件适宜

          不可切分

          snappy(.snappy)

          高速压缩/解压速度

          合理的压缩率

          压缩率比gzip低

          不原生、需要native安装

          适合作为map->reduce或是job数据流的中间数据传输格式

      • 数据操作分类
        • 操作分类

          具体操作

          sql备注

          DDL

          ?建表

          ?删除表

          ?修改表结构

          ?创建/删除视图

          ?创建数据库?

          ?显示命令

          Create/Drop/Alter Database

          Create/Drop/Truncate Table

          Alter Table/Partition/Column

          Create/Drop/Alter View

          Create/Drop Index

          Create/Drop Function

          Show functions;

          Describe function;

          DML

          ?数据插入(insert,load)

          load data...into table

          insert overwrite table?

          DQL

          ?数据查询(select)

      • hiveSQL
        • DDL
          • 1.2 建表模板

            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]

          • 关键词解释
          • external: 创建内部表还是外部表,此为内外表的唯一区分关键字。
          • comment col_comment: 给字段添加注释
          • comment table_comment: 给表本身添加注释
          • partitioned by: 按哪些字段分区,可以是一个,也可以是多个
          • clustered by col_name... into num_buckets BUCKETS:按哪几个字段做hash后分桶存储
          • row format:用于设定行、列、集合的分隔符等设置
          • stored as : 用于指定存储的文件类型,如text,rcfile等
          • location : 设定该表存储的hdfs目录,如果不手动设定,则采用hive默认的存储路径
          • 查看已存在表的详细信息
          • show create table或者desc tablename/desc formatted tablename

          • 创建视图(虚表)
          • 视图:本身不存储实际数据,只存储表关系,使用时再去通过关系查找数据。

            查看所有视图:show views;

        • DML

          • 2.1 加载数据脚本

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

          • 加载HDFS数据文件的脚本
          • LOAD DATA INPATH '/tmp/tianliangedu/input_student_info/student.txt' OVERWRITE INTO TABLE student PARTITION

            将查询结果插入到数据表中

          • 脚本模板
          • INSERT OVERWRITE TABLE tablename1

            [PARTITION (partcol1=val1, partcol2=val2 ...)]

            select_statement1 FROM from_statement

            多插入模式(一次查询多次插入)

          • 模板
          • FROM from_statement

            INSERT OVERWRITE TABLE tablename1 [PARTITION (partcol=val)] select_statement1??

            [INSERT OVERWRITE TABLE tablename2 [PARTITION ...] select_statement2

            ...

            动态分区模式(让分区成为被查询出来的结果表的字段名称变量)

          • 脚本模板
          • INSERT OVERWRITE TABLE tablename

            PARTITION (col_name) select_statement FROM from_statement

          • 设置非严格模式
          • set hive.exec.dynamic.partition.mode=nonstric;

        • DQL

          • 3.1 脚本模板

            SELECT [DISTINCT] select_expr, select_expr, ...

            FROM table_reference

            [WHERE where_condition]

            [GROUP BY col_list [HAVING condition]]

            [ CLUSTER BY col_list

            ? ?| [DISTRIBUTE BY col_list] [SORT BY| ORDER BY col_list]

            ]

            [LIMIT number]

          • DISTRIBUTE BY col_list
          • 以指定字段作为key作hash partition,保证相同的key会到同一个reduce去处理。

          • Sort By?col_list
          • 以指定字段作为单个reduce排序的key,保证单个reduce内的key有序排列输出。

          • Order By col_list
          • 只会生成一个reduce任务,对全部排序

          • CLUSTER BY col_list
          • 以指定字段作为key做hash partition,保证相同key会到同一个reduce去处理。该命令相当于distributed by col_list和sort by col_list的联合使用。

      • Hive系统函数

        • 查看所有系统函数
        • show functions

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-10-18 17:27:40  更:2021-10-18 17:28:42 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 2:59:37-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码