银行好像不咋问python,还是得放点心思在数据库上,银行里java和sql总得会一个吧。而且北京银行和中国银行这两天都不约而同的都问了我hive,不太会,关键是我之前其实搜过hive的内容,还不会答,哎,没过脑子有个屁用
介绍一下hive
- hive是基于hadoop的数据仓库
- 它适用于什么场景提出的/适用于什么场景
- 提供什么功能
- 怎么查询,查询的内部转化流程
- 缺点是什么
串起来
- hive是基于hadoop的数据仓库
- 设计是围绕海量数据的数据分析
- 使用类SQL 语言实现数据查询,查询语句通过解释器转换为MapReduce 作业提交到Hadoop 集群上,通过分布式计算后返回作业执行结果给用户
- 通过类SQL语句实现快速MapReduce统计,使MapReduce编程变得更加简单易行。
- 在hive上查询会有较高的延迟并且在作业提交和调度的时候需要大量的开销,所以hive不太适用于在线事物处理等需要低延迟的应用场景
hive和mysql有什么区别
- 1.Hive不支持数据的改写和添加,Mysql支持
- Hive不支持行级别的增删改的根本原因在于他的底层HDFS本身不支持。在HDFS中如果对整个文件的某一段或某一行内容进行增删改,势必会影响整个文件在集群中的存放布局。需要对整个集群中的数据进行汇总,重新切块,重新发送数据到每个节点,并备份,这样的情况是得不偿失的。所以HDFS的设计模式使他天生不适合做这个事
- Hive利用HDFS存储数据,利用MapReduce查询分析数据
- 2.Hive无索引,MySQL有索引
- Hive 支持索引(3.0 版本之前),但是 Hive 的索引与关系型数据库中的索引并不相同,比如,Hive 不支持主键或者外键。并且 Hive 索引提供的功能很有限, 效率也并不高,因此 Hive 索引很少使用
- 索引适用的场景:
- 适用于不更新的静态字段。以免总是重建索引数据。每次建立、更新数据后,都要重建索引以构建索引表。
hive怎么建立索引,数据库怎么建立索引
见上
建立索引的优缺点
- 索引是数据库中一个用于排序的数据结构,用来快速查询数据库中的数据。Mysql数据库使用二叉树树来实现索引的。
- 大大提高查找速度
- 缺点是占物理空间,对数据库进行增删改的时候也要动态的维护索引
数据仓库和数据库的区别
- 从逻辑上理解,二者没有区别,都是存放数据的地方
- 从数据量来说,数据仓库要比数据库更庞大的多。数据仓库 Datawarehouse (Amazon Redshift, Hive)主要用于海量数据的数据挖掘和数据分析,辅助做决策
- 数据库 Database (Oracle, Mysql, PostgreSQL)一次对少量数据,主要用于事务处理,即面向业务的增删查改
- 用途上的不同决定了这两种架构的特点不同
- 优化不同,数据库是事务性操作,所以是读写优化的
- 数据仓库是数据分析,一般只有读优化
数据仓库中数据的来源
主要有三种:
-
结构化数据:一般来自于数据库,比如MySQL等关系型数据库的表中保存的记录(rows)。即承担OLTP功能的数据载体。这类数据最好处理,因为数据表达方式作为规范,约束性最好。
-
半结构化数据:该部分数据来源较多,包括用户行为日志(如app的页面访问记录)、平台或管理服务日志(tomcat、mysql等服务日志)等等,也包括存储于MongoDB等NoSQL数据库中的记录(Docs等)。这些数据一般以Json或XML等形式存在,在ETL时难度较大。
-
非结构化数据:包括图片、音频、视频和网页等,这些数据非常复杂,信息量也很大,一般不会直接抽取出来直接保存到数仓中,而是记录他们的元数据信息(metadata),举图片为例,可能保存该图片的产生时间、格式、大小等等,至于图片本身,一般通过url链接保存在对象或文件存储系统中。
转载:https://blog.csdn.net/universe_1207/article/details/128027254
查看评论