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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
大数据开发工程师需要掌握以下知识: 1. 大数据技术:熟悉Hadoop、Spark、Flink等大数据处理框架,了解它们的原理和使用方式。 2. 数据存储和处理:掌握分布式文件系统(如HDFS)、NoSQL数据库(如HBase、Cassandra)、列式数据库(如Hive、Impala)等数据存储和处理技术。 3. 数据清洗和处理:熟悉ETL(Extract-Transform-Load)过程,了解数据清洗、转换和加载的常用工具和技术。 4. 分布式计算:了解分布式计算的基本概念和原理,掌握分布式计算框架(如MapReduce、Spark)的使用。 5. 数据可视化:熟悉数据可视化工具(如Tableau、Power BI)的使用,能够将处理后的数据以直观的方式展示。 6. 数据安全和隐私保护:了解数据安全和隐私保护的基本原理和方法,熟悉常见的数据安全技术。 7. 编程语言:熟练掌握至少一门编程语言,如Java、Python或Scala,能够使用它们进行大数据开发。 8. 数据挖掘和机器学习:了解基本的数据挖掘和机器学习算法,能够使用相关工具进行数据挖掘和模型构建。 9. 数据仓库设计和建模:了解数据仓库设计的基本原理和方法,掌握数据建模工具和技术。 10. 高可用和容错性:了解大数据系统的高可用性和容错性设计,能够进行故障排除和性能优化。 这些是大数据开发工程师应该掌握的基本知识,不同公司和项目可能还有一些特定的需求,需要根据实际情况做进一步的学习和了解。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值