Java教程

Hive学习笔记

本文主要是介绍Hive学习笔记,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
  1. Hive 基于Hadoop的数据仓库工具,是海量结构化数据分析的工具,提供了类SQL语句处理量数据。本质上是将HQL转化为MapReduce语句。
  2. Hive 处理的数据存储在HDFS中,底层实现默认是MapReduce,执行程序运行在YARN中。
  3. Hive 的延迟较高,常用于对实时性要求不高的大数据量分析
  4. Hive 支持用户自定义函数
  5. Hive 架构原理:从元数据库(MySQL\derby)中查询元数据->通过解释器、编译器、执行器完成HQL查询语句的查询计划存储在HDFS中,之后通过Map Reduce调用。
  6. Hive 是针对数据仓库设计的适用于读多查少的场景
  7. Hive 不支持索引,通过MapReduce并行扫描全表,延迟较高,不适合在线数据查询。
  8. Hive 是建立在hadoop 之上的,可扩展性相对传统数据库高。
  9. Hive 的基本数据类型:TINYINT--byte、SMALINT--short、INT、BIGINT--long、BOOLEAN、FLOAT、DOUBLE、STRINNG(可变字符串,不能声明最多存储多少字符)、TIMESTAMP、BINARY(字节数据组)
  10. Hive 集合数据类型:STRUCT、MAP、ARRAY。STRUCT 类似C语言数据结构,用.调用,MAP和ARRAY都可以用[]来查看
  11. Hive 所有整型都可以隐式向上转型,整型可以向FLOAT转型,FLOAT和STRING可以向DOUBLE转型,BOOLEAN不能转型。也可以用CAST转型
  12. Hive DDL语句:[https://codingdict.com/article/8149]
  13. Hive 内部表和外部表,内部表和外部表可以相互转换,alter table table_name set tblproperties('EXTERNAL'='TRUE'/'FALSE')
    • 未被external修饰的是内部表【managed table】,被external修饰的为外部表【external table】。
    • 内部表数据由Hive自身管理,外部表数据由HDFS管理。
    • 内部表数据存储在hive.metastore.warehouse.dir【默认:/user/hive/warehouse】,外部表数据存储位置由用户自己决定。
    • 删除内部表会直接删除元数据【metadata】及存储数据,删除外部表仅仅删除元数据,HDFS上的文件不会被删除。
    • 对内部表的修改会直接同步到元数据,而对外部表的表结构和分区进行修改,则需要修改【MSCK REPAIR TABLE table_name】。
  14. Hive 分区表是在表所在文件夹下继续分目录,通过where查询指定分区提高查询效率;分区信息存储在元数据数据库中。select查询时先查询到元数据中的分区信息,然后直接定位到分区文件夹
  15. Hive 分区上传数据的三种方式:上传-修复;上传-添加分区;load数据时指定分区字段,load会自动创建分区操作元数据。
  16. Hive 四种数据导入:Load、Location指定数据存储位置、insert select、create table as select、import
  17. Hive 四种数据导出:insert overwrite local directory '/path' select* from table;dfs -get hdfs地址 导出地址; hive -e 'select * from table '> 文件地址;export table table_name to 'path';
  18. Hive 清空表用truncate table table_name。只能清空内部表,不能清空外部表。
  19. Hive Rlike是一种扩展功能,通过Java正则表达式实现
  20. Hive order by是全局排序,一个reduce;sort by 每个MapReduce内部进行排序;distribute by 分区排序必须写在sort by之前;distribute 和 sort 字段相同时可以用cluster by 替换
  21. Hive 分区针对的是数据的存储路径;分桶针对的是数据文件。分桶抽样查询select * from table_name tablesample(bucket x out of y on id),表示要从第x个桶开始抽,一共抽取y个桶,每次抽取的桶是x+y。
  22. Hive 常用的查询函数 [https://www.cnblogs.com/duoduotouhenying/p/10149414.html]
  23. Hive 自定义函数:UDF;UDAF多进一出;UDTF。UDF是一进一出的,Java继承UDF类实现evaluate方法(可以重载多个方法)后打包成jar文件,然后在hive命令行添加jar包,执行命令创建自定义函数
  24. Hive UDTF函数一进多出;继承GenericUDTF类,实现initialize()方法、process()方法、close()方法
  25. Hive 文件存储格式:TIEXTFILE、SEQUENCEFILE、ORC、PARQUET
  26. Hive 列式存储和行式存储。TIEXTFILE、SEQUENCEFILE是利用行存储;ORC、PARQUET是列存储的
  27. Hive Fetch抓取数据不走MR,设置hive.fetch.task_conversion=more
  28. Hive 小数据量时可以设置为本地模式,但要小于设置的最大数据量和最大输入文件个数时才会采用local mr模式
  29. Hive MapJoin[https://www.cnblogs.com/rango-lhl/p/14299203.html]
  30. MapReduce的原理及执行过程[https://www.cnblogs.com/ahu-lichang/p/6645074.html]
这篇关于Hive学习笔记的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!