如何发展背景那个?演化框架?
为什么需要sql?
1)事实上的标准,关系型数据库存在那么多年。因为原来熟悉数据库dba,关系数据库肯定存储不了那么多数据,这些人更愿意使用sql方式;如果mapreduce或spark对于原来的dba门槛太高了;如果能够直接搬到大数据处理框架中来就很好
2)易学易用,花一两天时间 就可以掌握yongfa
3)应用面非常广
举例:对文本文件进行统计分析
id name age city
1001 zhangsan 45 beijing
1002 lisi 335 shanghai
1003 wangwu 29 tianjing
...
最简单方式:
定义表、定义列
table定义:person
定义列:
id int
name string
age int
city string
sql query....
shark
Hive:
基于hadoop上开源数据仓库工具,hive sql语言,能将hql转化为mapreduce执行
使得熟悉sql\不熟悉java,能够对hdfs海量数据进行查询
缺点:原来跑在mapreduce的缺点(效率)
改进:跑在tez,spark上,
Spark: hive on spark====>shark(hive on spark,翻译成rdd)
shark推出很受欢迎,快(1.基于内存2.基于内存列式存储3.与hive能兼容)
缺点:为了实现兼容hive,hive sql解析、逻辑执行计划的生成、执行计划的优化是依赖于hive的
仅仅只是把物理执行计划从mr作业替换为spark作业,(打了补丁的进程级别,额外的维护分支,导致后续维护困难)
shark终止以后产生两个分支:1spark sql上来(spark社区,并没有2功能完善);2还有一个Hive On spark(hive社区的,源
码在hive中)
spark sql支持多种数据源,多种优化技术,扩展性
sql on hadoop框架?
都是基于hadoop
1)hive facebook
sql===>mapreduce
metastore:元数据
sql:database\table\view
2)impala
cloudera: cdh(建议生产使用,解决版本依赖关系)、cm
sql:自己的守护进程执行的,非mr,基于内存
metastore
3)presto
facebook 京东用的比较多
sql:
4)drill
sql
访问:hdfs\rdbms\json\hbase\mongoDB\s3\hive
5)spark
sql
dataframe\dataset api
metastore
访问:hdfs\rdbms\json\hbase\mongoDB\s3\hive===>外部数据源
sparksql概述:是什么?能做什么?
是spark核心组件spark1.0发布的(之前没有),sparK1.3正式从α阶段毕业,说明稳定可用于生产
run sql\hiveql
连接到已经存在BI工具,可以通过jdbc连接
支持四种语言
官网文档:是spark一个模块,用于处理结构化数据的(文本文件,json,..)有见到sql吗?
集成:统一访问外部数据源
不仅仅sql:
愿景()
写更少代码,读更少数据,底层优化====>引入dataframe
架构